From 8a57ec2aa492d66381ec41a75659480358ce1258 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Tue, 8 Aug 2023 00:18:00 -0400 Subject: [PATCH 01/27] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 7f902e9..a42a23b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -70,7 +70,7 @@ body: attributes: label: PowerShell Modules description: Please provide information about the PowerShell modules are you using. Please provide the output from the following PowerShell command `Get-Module -ListAvailable @("AsBuiltReport.Core";"AsBuiltReport.NetApp.ONTAP";"PSPKI";"PScriboCharts";"PScribo") | Select Name, Version` - placeholder: Get-Module -ListAvailable @("AsBuiltReport.Core";"AsBuiltReport.NetApp.ONTAP";"PSPKI";"PScriboCharts";"PScribo") | Select Name, Version + placeholder: Get-Module -ListAvailable @("AsBuiltReport.Core";"AsBuiltReport.NetApp.ONTAP";"PScribo") | Select Name, Version validations: required: true - type: textarea From 3474876d20d5adfebf5cbcfe83a8cfa5f17ba807 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sun, 20 Aug 2023 09:05:43 -0400 Subject: [PATCH 02/27] Fix logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c8b1f4..4332f0b 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- +

From 4a159f376495679cae7791313b81df469ec44051 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Tue, 22 Aug 2023 14:09:19 -0400 Subject: [PATCH 03/27] Fix module icon --- AsBuiltReport.NetApp.ONTAP.psd1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AsBuiltReport.NetApp.ONTAP.psd1 b/AsBuiltReport.NetApp.ONTAP.psd1 index 63e9d82..b1672d1 100755 --- a/AsBuiltReport.NetApp.ONTAP.psd1 +++ b/AsBuiltReport.NetApp.ONTAP.psd1 @@ -113,7 +113,7 @@ PrivateData = @{ ProjectUri = 'https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP' # A URL to an icon representing this module. - IconUri = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport/master/AsBuiltReport.png' + IconUri = 'https://github.com/AsBuiltReport.png' # ReleaseNotes of this module ReleaseNotes = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/master/CHANGELOG.md' From 8148ff78ad20d74049c975ea15a5b808d407a5d3 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sat, 20 Jan 2024 16:26:32 -0400 Subject: [PATCH 04/27] Add files via upload --- .github/workflows/codeql.yml | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..6267bc4 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,49 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# +# https://github.com/microsoft/action-psscriptanalyzer +# For more information on PSScriptAnalyzer in general, see +# https://github.com/PowerShell/PSScriptAnalyzer + +name: CodeQL + +on: + push: + branches: [ "dev" ] + pull_request: + branches: [ "dev" ] + schedule: + - cron: '20 14 * * 1' + +permissions: + contents: read + +jobs: + build: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + name: PSScriptAnalyzer + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Run PSScriptAnalyzer + uses: microsoft/psscriptanalyzer-action@v1.1 + with: + # Check https://github.com/microsoft/action-psscriptanalyzer for more info about the options. + # The below set up runs PSScriptAnalyzer to your entire repository and runs some basic security rules. + path: .\ + recurse: true + # Include your own basic security rules. Removing this option will run all the rules + excludeRule: '"PSAvoidUsingPlainTextForPassword", "PSAvoidUsingUsernameAndPasswordParams", "PSAvoidUsingConvertToSecureStringWithPlainText"' + output: results.sarif + + # Upload the SARIF file generated in the previous step + - name: Upload SARIF results file + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: results.sarif From cd685420d45919801db9c2621c753c632da9fc7c Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sat, 20 Jan 2024 22:42:52 -0400 Subject: [PATCH 05/27] Fix codeql alerts --- Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 b/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 index 8a86b53..85dfd6f 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 @@ -29,7 +29,6 @@ function Get-AbrOntapVserverVolumesQosGPFixed { if ($QoSFilter) { foreach ($Item in $QoSFilter) { try { - $VolQoS = Get-NcVol $Item.Name -Controller $Array | Select-Object -ExpandProperty VolumeQosAttributes $inObj = [ordered] @{ 'Policy Name' = $Item.PolicyGroup 'Max Throughput' = $Item.MaxThroughput @@ -62,4 +61,4 @@ function Get-AbrOntapVserverVolumesQosGPFixed { end {} -} \ No newline at end of file +} From 9bc287f12ace07cbccb37ab0c038ea564083d311 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sat, 20 Jan 2024 22:43:17 -0400 Subject: [PATCH 06/27] Fix codeql alerts --- Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 b/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 index d159cf8..7803559 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 @@ -29,7 +29,6 @@ function Get-AbrOntapVserverVolumesQosGPAdaptive { if ($QoSFilter) { foreach ($Item in $QoSFilter) { try { - $VolQoS = Get-NcVol $Item.Name -Controller $Array | Select-Object -ExpandProperty VolumeQosAttributes $inObj = [ordered] @{ 'Policy Name' = $Item.PolicyGroup 'Peak Iops' = $Item.PeakIops @@ -62,4 +61,4 @@ function Get-AbrOntapVserverVolumesQosGPAdaptive { end {} -} \ No newline at end of file +} From 3603633eca0a3bff8c1e29ae15de06b338f2d274 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sun, 21 Jan 2024 09:07:28 -0400 Subject: [PATCH 07/27] Update Invoke-AsBuiltReport.NetApp.ONTAP.ps1 --- Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 1018637..523dc61 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -43,12 +43,12 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } # Import Report Configuration - $Report = $ReportConfig.Report - $InfoLevel = $ReportConfig.InfoLevel - $Options = $ReportConfig.Options + $script:Report = $ReportConfig.Report + $script:InfoLevel = $ReportConfig.InfoLevel + $script:Options = $ReportConfig.Options # General information - $TextInfo = (Get-Culture).TextInfo + $script:TextInfo = (Get-Culture).TextInfo #Connect to Ontap Storage Array using supplied credentials foreach ($OntapArray in $Target) { @@ -770,4 +770,4 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } } #$global:CurrentNcController = $null -} \ No newline at end of file +} From 47c2da7a13c5e5359a90b24ac95af6fa983b11d9 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Fri, 2 Feb 2024 09:39:21 -0400 Subject: [PATCH 08/27] Code Cleanup --- AsBuiltReport.NetApp.ONTAP.Style.ps1 | 1 + AsBuiltReport.NetApp.ONTAP.json | 4 +- AsBuiltReport.NetApp.ONTAP.psd1 | 164 +++++++++--------- CHANGELOG.md | 7 + LICENSE | 2 +- Src/Private/Get-AbrOntapCluster.ps1 | 9 +- Src/Private/Get-AbrOntapClusterASUP.ps1 | 14 +- Src/Private/Get-AbrOntapClusterHA.ps1 | 26 ++- Src/Private/Get-AbrOntapClusterLicense.ps1 | 16 +- .../Get-AbrOntapClusterLicenseUsage.ps1 | 11 +- Src/Private/Get-AbrOntapDiskAssign.ps1 | 13 +- Src/Private/Get-AbrOntapDiskBroken.ps1 | 33 ++-- Src/Private/Get-AbrOntapDiskInv.ps1 | 25 ++- Src/Private/Get-AbrOntapDiskOwner.ps1 | 18 +- Src/Private/Get-AbrOntapDiskShelf.ps1 | 16 +- Src/Private/Get-AbrOntapDiskType.ps1 | 43 +++-- Src/Private/Get-AbrOntapEfficiencyAggr.ps1 | 34 ++-- Src/Private/Get-AbrOntapEfficiencyConfig.ps1 | 16 +- Src/Private/Get-AbrOntapEfficiencyVol.ps1 | 22 ++- .../Get-AbrOntapEfficiencyVolDetailed.ps1 | 22 ++- .../Get-AbrOntapEfficiencyVolSisStatus.ps1 | 22 ++- Src/Private/Get-AbrOntapNetworkBdomain.ps1 | 9 +- .../Get-AbrOntapNetworkFailoverGroup.ps1 | 14 +- Src/Private/Get-AbrOntapNetworkIfgrp.ps1 | 22 ++- Src/Private/Get-AbrOntapNetworkIpSpace.ps1 | 14 +- Src/Private/Get-AbrOntapNetworkMGMT.ps1 | 103 +++++------ Src/Private/Get-AbrOntapNetworkPorts.ps1 | 20 +-- Src/Private/Get-AbrOntapNetworkRoute.ps1 | 18 +- Src/Private/Get-AbrOntapNetworkRouteLifs.ps1 | 18 +- Src/Private/Get-AbrOntapNetworkSubnet.ps1 | 14 +- Src/Private/Get-AbrOntapNetworkVlans.ps1 | 18 +- Src/Private/Get-AbrOntapNodeStorage.ps1 | 16 +- Src/Private/Get-AbrOntapNodes.ps1 | 24 ++- Src/Private/Get-AbrOntapNodesHW.ps1 | 28 ++- Src/Private/Get-AbrOntapNodesSP.ps1 | 14 +- Src/Private/Get-AbrOntapRepClusterPeer.ps1 | 14 +- Src/Private/Get-AbrOntapRepDestinations.ps1 | 16 +- Src/Private/Get-AbrOntapRepHistory.ps1 | 16 +- Src/Private/Get-AbrOntapRepMediator.ps1 | 18 +- Src/Private/Get-AbrOntapRepRelations.ps1 | 18 +- Src/Private/Get-AbrOntapRepVserverPeer.ps1 | 16 +- Src/Private/Get-AbrOntapSecurityKMS.ps1 | 14 +- Src/Private/Get-AbrOntapSecurityKMSExt.ps1 | 14 +- .../Get-AbrOntapSecurityKMSExtStatus.ps1 | 16 +- Src/Private/Get-AbrOntapSecurityMAP.ps1 | 30 ++-- Src/Private/Get-AbrOntapSecurityMAPRule.ps1 | 22 ++- Src/Private/Get-AbrOntapSecurityNAE.ps1 | 20 +-- Src/Private/Get-AbrOntapSecurityNVE.ps1 | 18 +- .../Get-AbrOntapSecuritySSLDetailed.ps1 | 22 ++- .../Get-AbrOntapSecuritySSLVserver.ps1 | 16 +- .../Get-AbrOntapSecuritySnapLockAggr.ps1 | 16 +- .../Get-AbrOntapSecuritySnapLockClock.ps1 | 16 +- .../Get-AbrOntapSecuritySnapLockVol.ps1 | 18 +- .../Get-AbrOntapSecuritySnapLockVollAttr.ps1 | 20 +-- Src/Private/Get-AbrOntapSecurityUsers.ps1 | 22 ++- Src/Private/Get-AbrOntapStorageAGGR.ps1 | 82 ++++----- Src/Private/Get-AbrOntapStorageFabricPool.ps1 | 16 +- .../Get-AbrOntapStorageFabricPoolConfig.ps1 | 16 +- Src/Private/Get-AbrOntapSysConfigBackup.ps1 | 20 +-- .../Get-AbrOntapSysConfigBackupURL.ps1 | 20 +-- Src/Private/Get-AbrOntapSysConfigDNS.ps1 | 16 +- Src/Private/Get-AbrOntapSysConfigEMS.ps1 | 20 +-- .../Get-AbrOntapSysConfigEMSSettings.ps1 | 40 ++--- Src/Private/Get-AbrOntapSysConfigImage.ps1 | 16 +- Src/Private/Get-AbrOntapSysConfigNTP.ps1 | 16 +- Src/Private/Get-AbrOntapSysConfigNTPHost.ps1 | 18 +- Src/Private/Get-AbrOntapSysConfigSNMP.ps1 | 18 +- Src/Private/Get-AbrOntapSysConfigTZ.ps1 | 16 +- .../Get-AbrOntapSysConfigWebStatus.ps1 | 16 +- Src/Private/Get-AbrOntapVserverCGLun.ps1 | 36 ++-- Src/Private/Get-AbrOntapVserverCGSummary.ps1 | 42 +++-- Src/Private/Get-AbrOntapVserverCIFSDC.ps1 | 18 +- .../Get-AbrOntapVserverCIFSLGMembers.ps1 | 18 +- .../Get-AbrOntapVserverCIFSLocalGroup.ps1 | 18 +- .../Get-AbrOntapVserverCIFSOptions.ps1 | 23 ++- .../Get-AbrOntapVserverCIFSSecurity.ps1 | 21 +-- .../Get-AbrOntapVserverCIFSSession.ps1 | 18 +- Src/Private/Get-AbrOntapVserverCIFSShare.ps1 | 18 +- .../Get-AbrOntapVserverCIFSShareProp.ps1 | 18 +- .../Get-AbrOntapVserverCIFSSummary.ps1 | 20 +-- Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 | 18 +- .../Get-AbrOntapVserverFcpInterface.ps1 | 18 +- Src/Private/Get-AbrOntapVserverFcpSummary.ps1 | 20 +-- .../Get-AbrOntapVserverIscsiInitiator.ps1 | 18 +- .../Get-AbrOntapVserverIscsiInterface.ps1 | 18 +- .../Get-AbrOntapVserverIscsiSummary.ps1 | 20 +-- Src/Private/Get-AbrOntapVserverLunIgroup.ps1 | 37 ++-- Src/Private/Get-AbrOntapVserverLunStorage.ps1 | 30 ++-- Src/Private/Get-AbrOntapVserverNFSExport.ps1 | 23 ++- Src/Private/Get-AbrOntapVserverNFSOptions.ps1 | 18 +- Src/Private/Get-AbrOntapVserverNFSSummary.ps1 | 24 ++- .../Get-AbrOntapVserverNonMappedLun.ps1 | 20 +-- Src/Private/Get-AbrOntapVserverS3Bucket.ps1 | 18 +- Src/Private/Get-AbrOntapVserverS3Summary.ps1 | 18 +- Src/Private/Get-AbrOntapVserverSummary.ps1 | 42 ++--- .../Get-AbrOntapVserverVolumeSnapshot.ps1 | 22 ++- ...et-AbrOntapVserverVolumeSnapshotHealth.ps1 | 20 +-- Src/Private/Get-AbrOntapVserverVolumes.ps1 | 20 +-- ...Get-AbrOntapVserverVolumesExportPolicy.ps1 | 18 +- .../Get-AbrOntapVserverVolumesFlexcache.ps1 | 28 ++- .../Get-AbrOntapVserverVolumesFlexclone.ps1 | 18 +- .../Get-AbrOntapVserverVolumesFlexgroup.ps1 | 2 +- Src/Private/Get-AbrOntapVserverVolumesQos.ps1 | 20 +-- ...et-AbrOntapVserverVolumesQosGPAdaptive.ps1 | 14 +- .../Get-AbrOntapVserverVolumesQosGPFixed.ps1 | 16 +- .../Get-AbrOntapVserverVolumesQtree.ps1 | 20 +-- .../Get-AbrOntapVserverVolumesQuota.ps1 | 53 +++--- Src/Private/Get-NetAppOntapAPI.ps1 | 22 +-- Src/Private/SharedUtilsFunctions.ps1 | 48 +++-- .../Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 46 ++--- 110 files changed, 1136 insertions(+), 1365 deletions(-) diff --git a/AsBuiltReport.NetApp.ONTAP.Style.ps1 b/AsBuiltReport.NetApp.ONTAP.Style.ps1 index 170ad02..91ce353 100755 --- a/AsBuiltReport.NetApp.ONTAP.Style.ps1 +++ b/AsBuiltReport.NetApp.ONTAP.Style.ps1 @@ -79,6 +79,7 @@ if ($ReportConfig.Report.ShowCoverPageImage) { BlankLine -Count 1 } Catch { Write-PScriboMessage -IsWarning "Unable to display cover page image. Please set 'ShowCoverPageImage' to 'false' in the report JSON configuration file to avoid this error." + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/AsBuiltReport.NetApp.ONTAP.json b/AsBuiltReport.NetApp.ONTAP.json index d8dab38..ba585a3 100755 --- a/AsBuiltReport.NetApp.ONTAP.json +++ b/AsBuiltReport.NetApp.ONTAP.json @@ -78,6 +78,6 @@ "Security": { "Users": true, "KMS": true + } } - } -} +} \ No newline at end of file diff --git a/AsBuiltReport.NetApp.ONTAP.psd1 b/AsBuiltReport.NetApp.ONTAP.psd1 index b1672d1..2320593 100755 --- a/AsBuiltReport.NetApp.ONTAP.psd1 +++ b/AsBuiltReport.NetApp.ONTAP.psd1 @@ -8,125 +8,125 @@ @{ -# Script module or binary module file associated with this manifest. -RootModule = 'AsBuiltReport.NetApp.ONTAP.psm1' + # Script module or binary module file associated with this manifest. + RootModule = 'AsBuiltReport.NetApp.ONTAP.psm1' -# Version number of this module. -ModuleVersion = '0.6.6' + # Version number of this module. + ModuleVersion = '0.6.7' -# Supported PSEditions -# CompatiblePSEditions = @() + # Supported PSEditions + # CompatiblePSEditions = @() -# ID used to uniquely identify this module -GUID = '0ca28a0b-504a-4754-af90-199b59da68f0' + # ID used to uniquely identify this module + GUID = '0ca28a0b-504a-4754-af90-199b59da68f0' -# Author of this module -Author = 'Jonathan Colon Feliciano' + # Author of this module + Author = 'Jonathan Colon Feliciano' -# Company or vendor of this module -#CompanyName = 'Unknown' + # Company or vendor of this module + #CompanyName = 'Unknown' -# Copyright statement for this module -Copyright = '(c) 2023 Jonathan Colon Feliciano. All rights reserved.' + # Copyright statement for this module + Copyright = '(c) 2024 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.' + # Description of the functionality provided by this module + Description = 'A PowerShell module to generate an as built report on the configuration of NetApp ONTAP.' -# Minimum version of the Windows PowerShell engine required by this module -#PowerShellVersion = '5.1' + # Minimum version of the Windows PowerShell engine required by this module + #PowerShellVersion = '5.1' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' + # Name of the Windows PowerShell host required by this module + # PowerShellHostName = '' -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' + # Minimum version of the Windows PowerShell host required by this module + # PowerShellHostVersion = '' -# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# DotNetFrameworkVersion = '' + # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. + # DotNetFrameworkVersion = '' -# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# CLRVersion = '' + # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. + # CLRVersion = '' -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' + # Processor architecture (None, X86, Amd64) required by this module + # ProcessorArchitecture = '' -# Modules that must be imported into the global environment prior to importing this module -RequiredModules = @( - @{ - ModuleName = 'AsBuiltReport.Core'; - ModuleVersion = '1.3.0' - }, - @{ - ModuleName = 'NetApp.ONTAP'; - ModuleVersion = '9.10.1.2111' - } -) + # Modules that must be imported into the global environment prior to importing this module + RequiredModules = @( + @{ + ModuleName = 'AsBuiltReport.Core'; + ModuleVersion = '1.3.0' + }, + @{ + ModuleName = 'NetApp.ONTAP'; + ModuleVersion = '9.10.1.2111' + } + ) -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() + # Assemblies that must be loaded prior to importing this module + # RequiredAssemblies = @() -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() + # Script files (.ps1) that are run in the caller's environment prior to importing this module. + # ScriptsToProcess = @() -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() + # Type files (.ps1xml) to be loaded when importing this module + # TypesToProcess = @() -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() + # Format files (.ps1xml) to be loaded when importing this module + # FormatsToProcess = @() -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() + # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess + # NestedModules = @() -# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = @('Invoke-AsBuiltReport.NetApp.ONTAP') + # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. + FunctionsToExport = @('Invoke-AsBuiltReport.NetApp.ONTAP') -# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -#CmdletsToExport = '*' + # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. + #CmdletsToExport = '*' -# Variables to export from this module -#VariablesToExport = '*' + # Variables to export from this module + #VariablesToExport = '*' -# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. -#AliasesToExport = '*' + # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. + #AliasesToExport = '*' -# DSC resources to export from this module -# DscResourcesToExport = @() + # DSC resources to export from this module + # DscResourcesToExport = @() -# List of all modules packaged with this module -# ModuleList = @() + # List of all modules packaged with this module + # ModuleList = @() -# List of all files packaged with this module -# FileList = @() + # List of all files packaged with this module + # FileList = @() -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ + # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. + PrivateData = @{ - PSData = @{ + PSData = @{ - # Tags applied to this module. These help with module discovery in online galleries. - Tags = 'AsBuiltReport', 'Report', 'NetApp', 'ONTAP', 'Documentation', 'PScribo', 'Windows', 'Linux', 'MacOS', 'PSEdition_Desktop', 'PSEdition_Core' + # Tags applied to this module. These help with module discovery in online galleries. + Tags = 'AsBuiltReport', 'Report', 'NetApp', 'ONTAP', 'Documentation', 'PScribo', 'Windows', 'Linux', 'MacOS', 'PSEdition_Desktop', 'PSEdition_Core' - # A URL to the license for this module. - LicenseUri = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/master/LICENSE' + # A URL to the license for this module. + LicenseUri = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/master/LICENSE' - # A URL to the main website for this project. - ProjectUri = 'https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP' + # A URL to the main website for this project. + ProjectUri = 'https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP' - # A URL to an icon representing this module. - IconUri = 'https://github.com/AsBuiltReport.png' + # A URL to an icon representing this module. + IconUri = 'https://github.com/AsBuiltReport.png' - # ReleaseNotes of this module - ReleaseNotes = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/master/CHANGELOG.md' + # ReleaseNotes of this module + ReleaseNotes = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/master/CHANGELOG.md' - } # End of PSData hashtable + } # End of PSData hashtable -} # End of PrivateData hashtable + } # End of PrivateData hashtable -# HelpInfo URI of this module -# HelpInfoURI = '' + # HelpInfo URI of this module + # HelpInfoURI = '' -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' + # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. + # DefaultCommandPrefix = '' } diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cb89cc..720b1b0 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # :arrows_counterclockwise: NetApp ONTAP Storage As Built Report Changelog +## [0.6.7] - 2024-02-02 + +### Changed + +- Code Cleanup + + ## [0.6.6] - 2023-08-07 ### Changed diff --git a/LICENSE b/LICENSE index 93592ec..9f885b7 100755 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 AsBuiltReport +Copyright (c) 2024 AsBuiltReport Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Src/Private/Get-AbrOntapCluster.ps1 b/Src/Private/Get-AbrOntapCluster.ps1 index b2a11c8..1847166 100755 --- a/Src/Private/Get-AbrOntapCluster.ps1 +++ b/Src/Private/Get-AbrOntapCluster.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapCluster { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapCluster { ) begin { - Write-PscriboMessage "Collecting ONTAP cluster information." + Write-PScriboMessage "Collecting ONTAP cluster information." } process { @@ -57,9 +57,8 @@ function Get-AbrOntapCluster { } $ClusterSummary | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapClusterASUP.ps1 b/Src/Private/Get-AbrOntapClusterASUP.ps1 index f72d0aa..b7845a0 100755 --- a/Src/Private/Get-AbrOntapClusterASUP.ps1 +++ b/Src/Private/Get-AbrOntapClusterASUP.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapClusterASUP { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapClusterASUP { ) begin { - Write-PscriboMessage "Collecting ONTAP AutoSupport information." + Write-PScriboMessage "Collecting ONTAP AutoSupport information." } process { @@ -51,15 +51,13 @@ function Get-AbrOntapClusterASUP { $TableParams['Caption'] = "- $($TableParams.Name)" } $Outobj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapClusterHA.ps1 b/Src/Private/Get-AbrOntapClusterHA.ps1 index 2445cef..c89b1d7 100755 --- a/Src/Private/Get-AbrOntapClusterHA.ps1 +++ b/Src/Private/Get-AbrOntapClusterHA.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapClusterHA { .DESCRIPTION .NOTES - Version: 0.6.6 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapClusterHA { ) begin { - Write-PscriboMessage "Collecting ONTAP cluster high availability information." + Write-PScriboMessage "Collecting ONTAP cluster high availability information." } process { @@ -32,22 +32,21 @@ function Get-AbrOntapClusterHA { [PSCustomObject] @{ 'Name' = $Nodes.Node 'Partner' = Switch ([string]::IsNullOrEmpty($ClusterHa.Partner)) { - 'True' {'-'} - 'False' {$ClusterHa.Partner} - default {'Unknwon'} + 'True' { '-' } + 'False' { $ClusterHa.Partner } + default { 'Unknwon' } } 'TakeOver Possible' = ConvertTo-TextYN $ClusterHa.TakeoverPossible 'TakeOver State' = Switch ([string]::IsNullOrEmpty($ClusterHa.TakeoverState)) { - 'True' {'-'} - 'False' {$ClusterHa.TakeoverState} - default {'Unknwon'} + 'True' { '-' } + 'False' { $ClusterHa.TakeoverState } + default { 'Unknwon' } } 'HA Mode' = $ClusterHa.CurrentMode.ToUpper() 'HA State' = $ClusterHa.State.ToUpper() } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Cluster.HA) { @@ -65,9 +64,8 @@ function Get-AbrOntapClusterHA { } $NodeSummary | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapClusterLicense.ps1 b/Src/Private/Get-AbrOntapClusterLicense.ps1 index 57e4bfa..c554d2c 100755 --- a/Src/Private/Get-AbrOntapClusterLicense.ps1 +++ b/Src/Private/Get-AbrOntapClusterLicense.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapClusterLicense { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapClusterLicense { ) begin { - Write-PscriboMessage "Collecting ONTAP cluster license information." + Write-PScriboMessage "Collecting ONTAP cluster license information." } process { @@ -31,7 +31,7 @@ function Get-AbrOntapClusterLicense { $License = Get-NcLicense -Owner $Node -Controller $Array if ($License) { $LicenseSummary = foreach ($Licenses in $License) { - $EntitlementRisk = Try {Get-NcLicenseEntitlementRisk -Package $Licenses.Package -Controller $Array -ErrorAction SilentlyContinue} catch {Write-PscriboMessage -IsWarning $_.Exception.Message} + $EntitlementRisk = Try { Get-NcLicenseEntitlementRisk -Package $Licenses.Package -Controller $Array -ErrorAction SilentlyContinue } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } [PSCustomObject] @{ 'License' = $TextInfo.ToTitleCase($Licenses.Package) 'Type' = $TextInfo.ToTitleCase($Licenses.Type) @@ -54,14 +54,12 @@ function Get-AbrOntapClusterLicense { $LicenseSummary | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapClusterLicenseUsage.ps1 b/Src/Private/Get-AbrOntapClusterLicenseUsage.ps1 index 2e22a30..4c14837 100755 --- a/Src/Private/Get-AbrOntapClusterLicenseUsage.ps1 +++ b/Src/Private/Get-AbrOntapClusterLicenseUsage.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapClusterLicenseUsage { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapClusterLicenseUsage { ) begin { - Write-PscriboMessage "Collecting ONTAP cluster license usage information." + Write-PScriboMessage "Collecting ONTAP cluster license usage information." } process { try { - $LicenseFeature = Get-NcFeatureStatus -Controller $Array + $LicenseFeature = Get-NcFeatureStatus -Controller $Array if ($LicenseFeature) { $LicenseFeature = foreach ($NodeLFs in $LicenseFeature) { [PSCustomObject] @{ @@ -46,9 +46,8 @@ function Get-AbrOntapClusterLicenseUsage { } $LicenseFeature | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapDiskAssign.ps1 b/Src/Private/Get-AbrOntapDiskAssign.ps1 index b1c9f92..d4fe896 100755 --- a/Src/Private/Get-AbrOntapDiskAssign.ps1 +++ b/Src/Private/Get-AbrOntapDiskAssign.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapDiskAssign { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,18 +19,18 @@ function Get-AbrOntapDiskAssign { ) begin { - Write-PscriboMessage "Collecting ONTAP disk assignment per node information." + Write-PScriboMessage "Collecting ONTAP disk assignment per node information." } process { try { - $NodeDiskCount = get-ncdisk -Controller $Array | ForEach-Object{ $_.DiskOwnershipInfo.HomeNodeName } | Group-Object + $NodeDiskCount = Get-NcDisk -Controller $Array | ForEach-Object { $_.DiskOwnershipInfo.HomeNodeName } | Group-Object if ($NodeDiskCount) { $DiskSummary = foreach ($Disks in $NodeDiskCount) { [PSCustomObject] @{ 'Node' = $Disks.Name 'Disk Count' = $Disks | Select-Object -ExpandProperty Count - } + } } $TableParams = @{ Name = "Assigned Disk - $($ClusterInfo.ClusterName)" @@ -42,9 +42,8 @@ function Get-AbrOntapDiskAssign { } $DiskSummary | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapDiskBroken.ps1 b/Src/Private/Get-AbrOntapDiskBroken.ps1 index 03ab1be..281b0f1 100755 --- a/Src/Private/Get-AbrOntapDiskBroken.ps1 +++ b/Src/Private/Get-AbrOntapDiskBroken.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapDiskBroken { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,25 +19,25 @@ function Get-AbrOntapDiskBroken { ) begin { - Write-PscriboMessage "Collecting ONTAP failed disk per node information." + Write-PScriboMessage "Collecting ONTAP failed disk per node information." } process { try { - $NodeDiskBroken = Get-NcDisk -Controller $Array | Where-Object{ $_.DiskRaidInfo.ContainerType -eq "broken" } + $NodeDiskBroken = Get-NcDisk -Controller $Array | Where-Object { $_.DiskRaidInfo.ContainerType -eq "broken" } if ($NodeDiskBroken) { $DiskFailed = foreach ($DiskBroken in $NodeDiskBroken) { - [PSCustomObject] @{ - 'Disk Name' = $DiskBroken.Name - 'Shelf' = $DiskBroken.Shelf - 'Bay' = $DiskBroken.Bay - 'Pool' = $DiskBroken.Pool - 'Disk Paths' = $DiskBroken.DiskPaths - } - } - if ($Healthcheck.Storage.DiskStatus) { - $DiskFailed | Set-Style -Style Critical -Property 'Disk Name','Shelf','Bay','Pool','Disk Paths' - } + [PSCustomObject] @{ + 'Disk Name' = $DiskBroken.Name + 'Shelf' = $DiskBroken.Shelf + 'Bay' = $DiskBroken.Bay + 'Pool' = $DiskBroken.Pool + 'Disk Paths' = $DiskBroken.DiskPaths + } + } + if ($Healthcheck.Storage.DiskStatus) { + $DiskFailed | Set-Style -Style Critical -Property 'Disk Name', 'Shelf', 'Bay', 'Pool', 'Disk Paths' + } $TableParams = @{ Name = "Failed Disk - $($ClusterInfo.ClusterName)" List = $false @@ -48,9 +48,8 @@ function Get-AbrOntapDiskBroken { } $DiskFailed | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapDiskInv.ps1 b/Src/Private/Get-AbrOntapDiskInv.ps1 index b3ffef8..3653e48 100755 --- a/Src/Private/Get-AbrOntapDiskInv.ps1 +++ b/Src/Private/Get-AbrOntapDiskInv.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapDiskInv { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,24 +19,23 @@ function Get-AbrOntapDiskInv { ) begin { - Write-PscriboMessage "Collecting ONTAP disk inventory per node." + Write-PScriboMessage "Collecting ONTAP disk inventory per node." } process { try { $DiskInv = Get-NcDisk -Controller $Array - $NodeDiskBroken = Get-NcDisk -Controller $Array | Where-Object{ $_.DiskRaidInfo.ContainerType -eq "broken" } + $NodeDiskBroken = Get-NcDisk -Controller $Array | Where-Object { $_.DiskRaidInfo.ContainerType -eq "broken" } if ($DiskInv) { $DiskInventory = foreach ($Disks in $DiskInv) { try { - $DiskType = Get-NcDisk -Controller $Array -Name $Disks.Name | ForEach-Object{ $_.DiskInventoryInfo } + $DiskType = Get-NcDisk -Controller $Array -Name $Disks.Name | ForEach-Object { $_.DiskInventoryInfo } $DiskFailed = $NodeDiskBroken | Where-Object { $_.'Name' -eq $Disks.Name } if ($DiskFailed.Name -eq $Disks.Name ) { $Disk = " $($DiskFailed.Name)(*)" - } - else { - $Disk = $Disks.Name - } + } else { + $Disk = $Disks.Name + } [PSCustomObject] @{ 'Disk Name' = $Disk 'Shelf' = $Disks.Shelf @@ -46,9 +45,8 @@ function Get-AbrOntapDiskInv { 'Serial Number' = $DiskType.SerialNumber 'Type' = $DiskType.DiskType } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.DiskStatus) { @@ -64,9 +62,8 @@ function Get-AbrOntapDiskInv { } $DiskInventory | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapDiskOwner.ps1 b/Src/Private/Get-AbrOntapDiskOwner.ps1 index 191d08a..2ca44a3 100755 --- a/Src/Private/Get-AbrOntapDiskOwner.ps1 +++ b/Src/Private/Get-AbrOntapDiskOwner.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapDiskOwner { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapDiskOwner { [Parameter ( Position = 0, Mandatory)] - [string] - $Node + [string] + $Node ) begin { - Write-PscriboMessage "Collecting ONTAP disk owned per node information." + Write-PScriboMessage "Collecting ONTAP disk owned per node information." } process { @@ -42,9 +42,8 @@ function Get-AbrOntapDiskOwner { 'Type' = $Disk.Type } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ @@ -57,9 +56,8 @@ function Get-AbrOntapDiskOwner { } $DiskSummary | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapDiskShelf.ps1 b/Src/Private/Get-AbrOntapDiskShelf.ps1 index 49b383a..2094d97 100755 --- a/Src/Private/Get-AbrOntapDiskShelf.ps1 +++ b/Src/Private/Get-AbrOntapDiskShelf.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapDiskShelf { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapDiskShelf { ) begin { - Write-PscriboMessage "Collecting ONTAP disk shelf information." + Write-PScriboMessage "Collecting ONTAP disk shelf information." } process { @@ -37,13 +37,12 @@ function Get-AbrOntapDiskShelf { 'Shelf ID' = $Nodeshelf.ShelfId 'State' = $Nodeshelf.ShelfState 'Type' = $Nodeshelf.ShelfType - 'Firmware' = $Nodeshelf.FirmwareRevA+$Nodeshelf.FirmwareRevB + 'Firmware' = $Nodeshelf.FirmwareRevA + $Nodeshelf.FirmwareRevB 'Bay Count' = $Nodeshelf.ShelfBayCount } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.ShelfStatus) { @@ -60,9 +59,8 @@ function Get-AbrOntapDiskShelf { } $ShelfInventory | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapDiskType.ps1 b/Src/Private/Get-AbrOntapDiskType.ps1 index b8c16df..213b646 100755 --- a/Src/Private/Get-AbrOntapDiskType.ps1 +++ b/Src/Private/Get-AbrOntapDiskType.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapDiskType { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,27 +19,26 @@ function Get-AbrOntapDiskType { ) begin { - Write-PscriboMessage "Collecting ONTAP disk type per node information." + Write-PScriboMessage "Collecting ONTAP disk type per node information." } process { try { - $NodeDiskContainerType = Get-NcDisk -Controller $Array | ForEach-Object{ $_.DiskRaidInfo.ContainerType } | Group-Object + $NodeDiskContainerType = Get-NcDisk -Controller $Array | ForEach-Object { $_.DiskRaidInfo.ContainerType } | Group-Object if ($NodeDiskContainerType) { $DiskType = foreach ($DiskContainers in $NodeDiskContainerType) { try { [PSCustomObject] @{ 'Container' = $DiskContainers.Name 'Disk Count' = $DiskContainers | Select-Object -ExpandProperty Count - } } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } - } - if ($Healthcheck.Storage.DiskStatus) { - $DiskType | Where-Object { $_.'Container' -like 'broken' } | Set-Style -Style Critical -Property 'Disk Count' + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } + } + if ($Healthcheck.Storage.DiskStatus) { + $DiskType | Where-Object { $_.'Container' -like 'broken' } | Set-Style -Style Critical -Property 'Disk Count' + } $TableParams = @{ Name = "Disk Container Type - $($ClusterInfo.ClusterName)" List = $false @@ -50,23 +49,22 @@ function Get-AbrOntapDiskType { } $DiskType | Table @TableParams } - $Node = Get-NcNode | Where-Object {$_.IsNodeHealthy -eq "True"} - if ($Node -and (Confirm-NcAggrSpareLow | Where-Object {$_.Value -eq "True"})) { + $Node = Get-NcNode | Where-Object { $_.IsNodeHealthy -eq "True" } + if ($Node -and (Confirm-NcAggrSpareLow | Where-Object { $_.Value -eq "True" })) { $OutObj = foreach ($Item in $Node) { try { $DiskSpareLow = Confirm-NcAggrSpareLow -Node $Item.Node [PSCustomObject] @{ 'Node' = $Item.Node - 'Aggregate Spare Low' = $DiskSpareLow.Value.ToString().Replace("True", "Yes").Replace("False","No") - } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + 'Aggregate Spare Low' = $DiskSpareLow.Value.ToString().Replace("True", "Yes").Replace("False", "No") } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } - if ($Healthcheck.Storage.DiskStatus) { - $OutObj | Where-Object { $_.'Aggregate Spare Low' -like 'Yes' } | Set-Style -Style Critical -Property 'Node','Aggregate Spare Low' - } + } + if ($Healthcheck.Storage.DiskStatus) { + $OutObj | Where-Object { $_.'Aggregate Spare Low' -like 'Yes' } | Set-Style -Style Critical -Property 'Node', 'Aggregate Spare Low' + } $TableParams = @{ Name = "HealthCheck - Aggregate Disk Spare Low - $($ClusterInfo.ClusterName)" List = $false @@ -77,9 +75,8 @@ function Get-AbrOntapDiskType { } $OutObj | Table @TableParams } - } - 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 32842ba..cfa2dfd 100755 --- a/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 +++ b/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapEfficiencyAggr { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapEfficiencyAggr { ) begin { - Write-PscriboMessage "Collecting ONTAP Aggregate Efficiency Savings information." + Write-PScriboMessage "Collecting ONTAP Aggregate Efficiency Savings information." } process { try { - $Data = Get-NcAggr -Controller $Array | Where-Object {$_.AggrRaidAttributes.HasLocalRoot -ne 'True'} + $Data = Get-NcAggr -Controller $Array | Where-Object { $_.AggrRaidAttributes.HasLocalRoot -ne 'True' } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -39,9 +39,8 @@ function Get-AbrOntapEfficiencyAggr { } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -56,15 +55,15 @@ function Get-AbrOntapEfficiencyAggr { $OutObj | Table @TableParams } try { - $Data = Get-NcAggr -Controller $Array | Where-Object {$_.AggrRaidAttributes.HasLocalRoot -ne 'True'} + $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 - $VolInAggr = Get-NcVol -Aggregate $Item.Name -Controller $Array | Where-Object {$_.VolumeStateAttributes.IsVserverRoot -ne 'True'} - $VolFilter = $VolInAggr | Where-Object { $_.VolumeSisAttributes.IsSisStateEnabled -ne "True"} + $VolInAggr = Get-NcVol -Aggregate $Item.Name -Controller $Array | Where-Object { $_.VolumeStateAttributes.IsVserverRoot -ne 'True' } + $VolFilter = $VolInAggr | Where-Object { $_.VolumeSisAttributes.IsSisStateEnabled -ne "True" } if ($Saving -ne 0 -and $VolFilter) { $inObj = [ordered] @{ 'Aggregate' = $Item.Name @@ -72,14 +71,13 @@ function Get-AbrOntapEfficiencyAggr { } $OutObj += [pscustomobject]$inobj } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.Efficiency) { - $OutObj | Set-Style -Style Warning -Property 'Aggregate','Volumes without Deduplication' + $OutObj | Set-Style -Style Warning -Property 'Aggregate', 'Volumes without Deduplication' } $TableParams = @{ @@ -98,13 +96,11 @@ function Get-AbrOntapEfficiencyAggr { $OutObj | Table @TableParams } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapEfficiencyConfig.ps1 b/Src/Private/Get-AbrOntapEfficiencyConfig.ps1 index 90d217b..f20c2c5 100755 --- a/Src/Private/Get-AbrOntapEfficiencyConfig.ps1 +++ b/Src/Private/Get-AbrOntapEfficiencyConfig.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapEfficiencyConfig { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapEfficiencyConfig { ) begin { - Write-PscriboMessage "Collecting ONTAP Storage Efficiency Savings information." + Write-PScriboMessage "Collecting ONTAP Storage Efficiency Savings information." } process { try { - $Data = Get-NcAggr -Controller $Array | Where-Object {$_.AggrRaidAttributes.HasLocalRoot -ne 'True'} + $Data = Get-NcAggr -Controller $Array | Where-Object { $_.AggrRaidAttributes.HasLocalRoot -ne 'True' } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -41,9 +41,8 @@ function Get-AbrOntapEfficiencyConfig { } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -57,9 +56,8 @@ function Get-AbrOntapEfficiencyConfig { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapEfficiencyVol.ps1 b/Src/Private/Get-AbrOntapEfficiencyVol.ps1 index fbad012..32318d1 100755 --- a/Src/Private/Get-AbrOntapEfficiencyVol.ps1 +++ b/Src/Private/Get-AbrOntapEfficiencyVol.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapEfficiencyVol { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapEfficiencyVol { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Volume Efficiency Savings information." + Write-PScriboMessage "Collecting ONTAP Volume Efficiency Savings information." } process { try { - $Data = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object {$_.Name -ne 'vol0' -and $_.State -eq "online"} + $Data = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object { $_.Name -ne 'vol0' -and $_.State -eq "online" } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -44,25 +44,23 @@ function Get-AbrOntapEfficiencyVol { 'Efficiency Percent' = $Saving.EfficiencyPercent | ConvertTo-FormattedNumber -Type Percent -NumberFormatString "0.0" -ErrorAction SilentlyContinue } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ Name = "Volume Efficiency Savings - $($Vserver)" List = $false - ColumnWidths = 30, 15, 10, 11, 10, 12 ,12 + ColumnWidths = 30, 15, 10, 11, 10, 12 , 12 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapEfficiencyVolDetailed.ps1 b/Src/Private/Get-AbrOntapEfficiencyVolDetailed.ps1 index 4deef13..eccc500 100755 --- a/Src/Private/Get-AbrOntapEfficiencyVolDetailed.ps1 +++ b/Src/Private/Get-AbrOntapEfficiencyVolDetailed.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapEfficiencyVolDetailed { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapEfficiencyVolDetailed { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Volume Efficiency Savings information." + Write-PScriboMessage "Collecting ONTAP Volume Efficiency Savings information." } process { try { - $Data = Get-NcVol -VserverContext $Vserver -Controller $Array| Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.State -eq "online"} + $Data = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.State -eq "online" } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -42,12 +42,11 @@ function Get-AbrOntapEfficiencyVolDetailed { 'Snapshot Savings' = $Saving.Returns.Snapshot | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue 'Cloning Savings' = $Saving.Returns.Cloning | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue 'Efficiency %' = $Saving.EfficiencyPercent | ConvertTo-FormattedNumber -Type Percent -NumberFormatString "0.0" -ErrorAction SilentlyContinue - 'Efficiency % w/o Snapshots' = [Math]::Round((($Saving.Returns.Dedupe + $Saving.Returns.Compression) / ($Saving.Used + $Saving.Returns.Dedupe + $Saving.Returns.Compression)) * 100) | ConvertTo-FormattedNumber -Type Percent -NumberFormatString "0.0" -ErrorAction SilentlyContinue + 'Efficiency % w/o Snapshots' = [Math]::Round((($Saving.Returns.Dedupe + $Saving.Returns.Compression) / ($Saving.Used + $Saving.Returns.Dedupe + $Saving.Returns.Compression)) * 100) | ConvertTo-FormattedNumber -Type Percent -NumberFormatString "0.0" -ErrorAction SilentlyContinue } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -61,9 +60,8 @@ function Get-AbrOntapEfficiencyVolDetailed { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapEfficiencyVolSisStatus.ps1 b/Src/Private/Get-AbrOntapEfficiencyVolSisStatus.ps1 index c99aef5..88c207d 100755 --- a/Src/Private/Get-AbrOntapEfficiencyVolSisStatus.ps1 +++ b/Src/Private/Get-AbrOntapEfficiencyVolSisStatus.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapEfficiencyVolSisStatus { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapEfficiencyVolSisStatus { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Volume Deduplication information." + Write-PScriboMessage "Collecting ONTAP Volume Deduplication information." } process { try { - $Data = Get-NcSis -VserverContext $Vserver -Controller $Array | Where-Object {$_.Path -notlike '*vol0*'} + $Data = Get-NcSis -VserverContext $Vserver -Controller $Array | Where-Object { $_.Path -notlike '*vol0*' } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -39,16 +39,15 @@ function Get-AbrOntapEfficiencyVolSisStatus { 'State' = Switch ($Item.State) { 'enabled' { 'Enabled' } 'disabled' { 'Disabled' } - default {$Item.State} + default { $Item.State } } 'Status' = $Item.Status 'Schedule Or Policy' = ConvertTo-EmptyToFiller $Item.ScheduleOrPolicy 'Progress' = ConvertTo-EmptyToFiller $Item.Progress } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.Efficiency) { @@ -65,9 +64,8 @@ function Get-AbrOntapEfficiencyVolSisStatus { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkBdomain.ps1 b/Src/Private/Get-AbrOntapNetworkBdomain.ps1 index 79ba130..26a6201 100755 --- a/Src/Private/Get-AbrOntapNetworkBdomain.ps1 +++ b/Src/Private/Get-AbrOntapNetworkBdomain.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkBdomain { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapNetworkBdomain { ) begin { - Write-PscriboMessage "Collecting ONTAP Broadcast information." + Write-PScriboMessage "Collecting ONTAP Broadcast information." } process { @@ -48,9 +48,8 @@ function Get-AbrOntapNetworkBdomain { } $BDomainObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkFailoverGroup.ps1 b/Src/Private/Get-AbrOntapNetworkFailoverGroup.ps1 index bbde4a8..d855ead 100755 --- a/Src/Private/Get-AbrOntapNetworkFailoverGroup.ps1 +++ b/Src/Private/Get-AbrOntapNetworkFailoverGroup.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkFailoverGroup { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapNetworkFailoverGroup { ) begin { - Write-PscriboMessage "Collecting ONTAP Failover Group information." + Write-PScriboMessage "Collecting ONTAP Failover Group information." } process { @@ -35,9 +35,8 @@ function Get-AbrOntapNetworkFailoverGroup { 'Target' = $Item.Target } $FGObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -51,9 +50,8 @@ function Get-AbrOntapNetworkFailoverGroup { } $FGObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkIfgrp.ps1 b/Src/Private/Get-AbrOntapNetworkIfgrp.ps1 index 6356792..e7a3746 100755 --- a/Src/Private/Get-AbrOntapNetworkIfgrp.ps1 +++ b/Src/Private/Get-AbrOntapNetworkIfgrp.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkIfgrp { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapNetworkIfgrp { [Parameter ( Position = 0, Mandatory)] - [string] - $Node + [string] + $Node ) begin { - Write-PscriboMessage "Collecting ONTAP physical aggregata interface information." + Write-PScriboMessage "Collecting ONTAP physical aggregata interface information." } process { @@ -35,7 +35,7 @@ function Get-AbrOntapNetworkIfgrp { try { if ($Nics.DownPorts) { $UPPort = "$($Nics.UpPorts) $($Nics.DownPorts)(Down)" - }else {$UPPort = [String]$Nics.UpPorts} + } else { $UPPort = [String]$Nics.UpPorts } $inObj = [ordered] @{ 'Port Name' = $Nics.IfgrpName 'Distribution Function' = $Nics.DistributionFunction @@ -45,9 +45,8 @@ function Get-AbrOntapNetworkIfgrp { 'Port Participation' = $Nics.PortParticipation } $AggregatePorts += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Network.Port) { @@ -59,16 +58,15 @@ function Get-AbrOntapNetworkIfgrp { $TableParams = @{ Name = "Link Aggregation Group - $($Node)" List = $false - ColumnWidths = 15, 15, 15 ,20 ,20, 15 + ColumnWidths = 15, 15, 15 , 20 , 20, 15 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AggregatePorts | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkIpSpace.ps1 b/Src/Private/Get-AbrOntapNetworkIpSpace.ps1 index e3b5925..6abdf24 100755 --- a/Src/Private/Get-AbrOntapNetworkIpSpace.ps1 +++ b/Src/Private/Get-AbrOntapNetworkIpSpace.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkIpSpace { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapNetworkIpSpace { ) begin { - Write-PscriboMessage "Collecting ONTAP IPSpace information." + Write-PScriboMessage "Collecting ONTAP IPSpace information." } process { @@ -51,15 +51,13 @@ function Get-AbrOntapNetworkIpSpace { $TableParams['Caption'] = "- $($TableParams.Name)" } $IPSpaceObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkMGMT.ps1 b/Src/Private/Get-AbrOntapNetworkMGMT.ps1 index 8f909d5..3aeebdd 100755 --- a/Src/Private/Get-AbrOntapNetworkMGMT.ps1 +++ b/Src/Private/Get-AbrOntapNetworkMGMT.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkMgmt { .DESCRIPTION .NOTES - Version: 0.6.6 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,15 +19,15 @@ function Get-AbrOntapNetworkMgmt { ) begin { - Write-PscriboMessage "Collecting ONTAP network management interface information." + Write-PScriboMessage "Collecting ONTAP network management interface information." } process { try { - if (Get-NcNetInterface -Controller $Array | Where-Object {$_.Role -eq 'cluster'}) { + if (Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'cluster' }) { try { Section -ExcludeFromTOC -Style Heading6 'Cluster Network Interfaces' { - $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object {$_.Role -eq 'cluster'} + $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'cluster' } $ClusterObj = @() if ($ClusterData) { foreach ($Item in $ClusterData) { @@ -35,18 +35,17 @@ function Get-AbrOntapNetworkMgmt { $inObj = [ordered] @{ 'Cluster Interface' = $Item.InterfaceName 'Status' = Switch ($Item.OpStatus) { - "" {"Unknown"} - $Null {"Unknown"} - default {$Item.OpStatus.ToString().ToUpper()} + "" { "Unknown" } + $Null { "Unknown" } + default { $Item.OpStatus.ToString().ToUpper() } } 'Data Protocols' = $Item.DataProtocols 'Address' = $Item.Address 'Vserver' = $Item.Vserver } $ClusterObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Network.Interface) { @@ -64,14 +63,13 @@ function Get-AbrOntapNetworkMgmt { $ClusterObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } try { Section -ExcludeFromTOC -Style Heading6 'Management Network Interfaces' { - $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object {$_.Role -eq 'cluster_mgmt' -or $_.Role -eq 'node_mgmt'} + $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'cluster_mgmt' -or $_.Role -eq 'node_mgmt' } $ClusterObj = @() if ($ClusterData) { foreach ($Item in $ClusterData) { @@ -79,18 +77,17 @@ function Get-AbrOntapNetworkMgmt { $inObj = [ordered] @{ 'MGMT Interface' = $Item.InterfaceName 'Status' = Switch ($Item.OpStatus) { - "" {"Unknown"} - $Null {"Unknown"} - default {$Item.OpStatus.ToString().ToUpper()} + "" { "Unknown" } + $Null { "Unknown" } + default { $Item.OpStatus.ToString().ToUpper() } } 'Data Protocols' = $Item.DataProtocols 'Address' = $Item.Address 'Vserver' = $Item.Vserver } $ClusterObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Network.Interface) { @@ -108,14 +105,13 @@ function Get-AbrOntapNetworkMgmt { $ClusterObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { - if (Get-NcNetInterface -Controller $Array | Where-Object {$_.Role -eq 'intercluster'}) { + if (Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'intercluster' }) { Section -ExcludeFromTOC -Style Heading6 'Intercluster Network Interfaces' { - $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object {$_.Role -eq 'intercluster'} + $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'intercluster' } $ClusterObj = @() if ($ClusterData) { foreach ($Item in $ClusterData) { @@ -123,18 +119,17 @@ function Get-AbrOntapNetworkMgmt { $inObj = [ordered] @{ 'Intercluster Interface' = $Item.InterfaceName 'Status' = Switch ($Item.OpStatus) { - "" {"Unknown"} - $Null {"Unknown"} - default {$Item.OpStatus.ToString().ToUpper()} + "" { "Unknown" } + $Null { "Unknown" } + default { $Item.OpStatus.ToString().ToUpper() } } 'Data Protocols' = $Item.DataProtocols 'Address' = $Item.Address 'Vserver' = $Item.Vserver } $ClusterObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Network.Interface) { @@ -153,13 +148,12 @@ function Get-AbrOntapNetworkMgmt { } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { Section -ExcludeFromTOC -Style Heading6 'Data Network Interfaces' { - $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object {$_.Role -eq 'data' -and $_.DataProtocols -ne 'fcp' -and $_.Vserver -notin $options.Exclude.Vserver} + $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'data' -and $_.DataProtocols -ne 'fcp' -and $_.Vserver -notin $options.Exclude.Vserver } $ClusterObj = @() if ($ClusterData) { foreach ($Item in $ClusterData) { @@ -167,18 +161,17 @@ function Get-AbrOntapNetworkMgmt { $inObj = [ordered] @{ 'Data Interface' = $Item.InterfaceName 'Status' = Switch ($Item.OpStatus) { - "" {"Unknown"} - $Null {"Unknown"} - default {$Item.OpStatus.ToString().ToUpper()} + "" { "Unknown" } + $Null { "Unknown" } + default { $Item.OpStatus.ToString().ToUpper() } } 'Data Protocols' = [string]$Item.DataProtocols 'Address' = $Item.Address 'Vserver' = $Item.Vserver } $ClusterObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Network.Interface) { @@ -196,16 +189,15 @@ function Get-AbrOntapNetworkMgmt { $ClusterObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { - if ((Get-NcNetInterface -Controller $Array | Where-Object { $_.DataProtocols -ne 'fcp' -and $_.IsHome -like "False"}) -and $Healthcheck.Network.Interface) { + if ((Get-NcNetInterface -Controller $Array | Where-Object { $_.DataProtocols -ne 'fcp' -and $_.IsHome -like "False" }) -and $Healthcheck.Network.Interface) { Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Check If Network Interface is Home' { Paragraph "The following section provides the LIF Home Status Information on $($ClusterInfo.ClusterName)." BlankLine - $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.DataProtocols -ne 'fcp' -and $_.IsHome -like "False"} + $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.DataProtocols -ne 'fcp' -and $_.IsHome -like "False" } $ClusterObj = @() if ($ClusterData) { foreach ($Item in $ClusterData) { @@ -217,18 +209,17 @@ function Get-AbrOntapNetworkMgmt { 'IsHome' = Switch ($Item.IsHome) { "True" { 'Yes' } "False" { "No" } - default {$Item.IsHome} + default { $Item.IsHome } } 'Vserver' = $Item.Vserver } $ClusterObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Network.Interface) { - $ClusterObj | Where-Object { $_.'IsHome' -ne 'Yes' } | Set-Style -Style Warning -Property 'Network Interface','IsHome','Home Port','Current Port','Vserver' + $ClusterObj | Where-Object { $_.'IsHome' -ne 'Yes' } | Set-Style -Style Warning -Property 'Network Interface', 'IsHome', 'Home Port', 'Current Port', 'Vserver' } $TableParams = @{ @@ -243,13 +234,11 @@ function Get-AbrOntapNetworkMgmt { } } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkPorts.ps1 b/Src/Private/Get-AbrOntapNetworkPorts.ps1 index 51ef7e7..f2aa8a7 100755 --- a/Src/Private/Get-AbrOntapNetworkPorts.ps1 +++ b/Src/Private/Get-AbrOntapNetworkPorts.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkPort { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapNetworkPort { [Parameter ( Position = 0, Mandatory)] - [string] - $Node + [string] + $Node ) begin { - Write-PscriboMessage "Collecting ONTAP physical interface information." + Write-PScriboMessage "Collecting ONTAP physical interface information." } process { try { - $PhysicalPorts = Get-NcNetPort -Node $Node -Controller $Array | Where-Object {$_.PortType -like 'physical'} + $PhysicalPorts = Get-NcNetPort -Node $Node -Controller $Array | Where-Object { $_.PortType -like 'physical' } if ($PhysicalPorts) { $PhysicalNic = foreach ($Nics in $PhysicalPorts) { try { @@ -44,9 +44,8 @@ function Get-AbrOntapNetworkPort { default { $Nics.IsAdministrativeUp } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Network.Port) { @@ -63,9 +62,8 @@ function Get-AbrOntapNetworkPort { } $PhysicalNic | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkRoute.ps1 b/Src/Private/Get-AbrOntapNetworkRoute.ps1 index 541f0c0..8c1a330 100755 --- a/Src/Private/Get-AbrOntapNetworkRoute.ps1 +++ b/Src/Private/Get-AbrOntapNetworkRoute.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkRoute { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapNetworkRoute { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP network route information." + Write-PScriboMessage "Collecting ONTAP network route information." } process { @@ -40,9 +40,8 @@ function Get-AbrOntapNetworkRoute { 'Address Family' = $Item.AddressFamily.ToString().ToUpper() } $RoutesObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -56,9 +55,8 @@ function Get-AbrOntapNetworkRoute { } $RoutesObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkRouteLifs.ps1 b/Src/Private/Get-AbrOntapNetworkRouteLifs.ps1 index 8b1fb55..05798e9 100755 --- a/Src/Private/Get-AbrOntapNetworkRouteLifs.ps1 +++ b/Src/Private/Get-AbrOntapNetworkRouteLifs.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkRouteLif { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapNetworkRouteLif { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP network route per lif information." + Write-PScriboMessage "Collecting ONTAP network route per lif information." } process { @@ -40,9 +40,8 @@ function Get-AbrOntapNetworkRouteLif { 'Address Family' = $Item.AddressFamily.ToString().ToUpper() } $RoutesObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -56,9 +55,8 @@ function Get-AbrOntapNetworkRouteLif { } $RoutesObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkSubnet.ps1 b/Src/Private/Get-AbrOntapNetworkSubnet.ps1 index 0d1f663..b046cd1 100755 --- a/Src/Private/Get-AbrOntapNetworkSubnet.ps1 +++ b/Src/Private/Get-AbrOntapNetworkSubnet.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkSubnet { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapNetworkSubnet { ) begin { - Write-PscriboMessage "Collecting ONTAP Subnets information." + Write-PScriboMessage "Collecting ONTAP Subnets information." } process { @@ -38,9 +38,8 @@ function Get-AbrOntapNetworkSubnet { 'Ip Ranges' = $Item.IpRanges } $SubnetObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapNetworkSubnet { } $SubnetObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNetworkVlans.ps1 b/Src/Private/Get-AbrOntapNetworkVlans.ps1 index 5735874..2be71b9 100755 --- a/Src/Private/Get-AbrOntapNetworkVlans.ps1 +++ b/Src/Private/Get-AbrOntapNetworkVlans.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNetworkVlan { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapNetworkVlan { [Parameter ( Position = 0, Mandatory)] - [string] - $Node + [string] + $Node ) begin { - Write-PscriboMessage "Collecting ONTAP VLAN information." + Write-PScriboMessage "Collecting ONTAP VLAN information." } process { @@ -39,9 +39,8 @@ function Get-AbrOntapNetworkVlan { 'Vlan ID' = $Item.VlanID } $VlanObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -55,9 +54,8 @@ function Get-AbrOntapNetworkVlan { } $VlanObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNodeStorage.ps1 b/Src/Private/Get-AbrOntapNodeStorage.ps1 index 612ebc2..0fcfccc 100755 --- a/Src/Private/Get-AbrOntapNodeStorage.ps1 +++ b/Src/Private/Get-AbrOntapNodeStorage.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNodeStorage { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapNodeStorage { ) begin { - Write-PscriboMessage "Collecting ONTAP Node Storage information." + Write-PScriboMessage "Collecting ONTAP Node Storage information." } process { try { - $Data = Get-NcVol -Controller $Array | Where-Object {$_.Name -eq 'vol0'} + $Data = Get-NcVol -Controller $Array | Where-Object { $_.Name -eq 'vol0' } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -38,9 +38,8 @@ function Get-AbrOntapNodeStorage { 'Used' = $Item.Used | ConvertTo-FormattedNumber -Type Percent -ErrorAction SilentlyContinue } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Node.HW) { @@ -58,9 +57,8 @@ function Get-AbrOntapNodeStorage { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNodes.ps1 b/Src/Private/Get-AbrOntapNodes.ps1 index be85332..a4f5eeb 100755 --- a/Src/Private/Get-AbrOntapNodes.ps1 +++ b/Src/Private/Get-AbrOntapNodes.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNode { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapNode { ) begin { - Write-PscriboMessage "Collecting ONTAP node information." + Write-PScriboMessage "Collecting ONTAP node information." } process { @@ -29,15 +29,14 @@ function Get-AbrOntapNode { $NodeSummary = foreach ($Nodes in $NodeSum) { try { [PSCustomObject] @{ - 'Name' = $Nodes.Node - 'Model' = $Nodes.NodeModel - 'Id' = $Nodes.NodeSystemId - 'Serial' = $Nodes.NodeSerialNumber - 'Uptime' = $Nodes.NodeUptimeTS + 'Name' = $Nodes.Node + 'Model' = $Nodes.NodeModel + 'Id' = $Nodes.NodeSystemId + 'Serial' = $Nodes.NodeSerialNumber + 'Uptime' = $Nodes.NodeUptimeTS } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ @@ -50,9 +49,8 @@ function Get-AbrOntapNode { } $NodeSummary | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNodesHW.ps1 b/Src/Private/Get-AbrOntapNodesHW.ps1 index 1ea3252..05bfacc 100755 --- a/Src/Private/Get-AbrOntapNodesHW.ps1 +++ b/Src/Private/Get-AbrOntapNodesHW.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNodesHW { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapNodesHW { ) begin { - Write-PscriboMessage "Collecting ONTAP Node Hardware information." + Write-PScriboMessage "Collecting ONTAP Node Hardware information." } process { @@ -30,7 +30,7 @@ function Get-AbrOntapNodesHW { foreach ($NodeHWs in $NodeHW) { try { $NodeInfo = Get-NcNode -Node $NodeHWs.SystemName -Controller $Array - $Inobj = [ordered] @{ + $Inobj = [ordered] @{ 'Name' = $NodeHWs.SystemName 'System Type' = $NodeHWs.SystemMachineType 'CPU Count' = $NodeHWs.NumberOfProcessors @@ -40,18 +40,18 @@ function Get-AbrOntapNodesHW { 'All Flash Optimized' = ConvertTo-TextYN $NodeInfo.IsAllFlashOptimized 'Epsilon' = ConvertTo-TextYN $NodeInfo.IsEpsilonNode 'System Healthy' = Switch ($NodeInfo.IsNodeHealthy) { - "True" {"Healthy"} - "False" {"UnHealthy"} - default {$NodeInfo.IsNodeHealthy} + "True" { "Healthy" } + "False" { "UnHealthy" } + default { $NodeInfo.IsNodeHealthy } } 'Failed Fan Count' = $NodeInfo.EnvFailedFanCount 'Failed Fan Error' = $NodeInfo.EnvFailedFanMessage 'Failed PowerSupply Count' = $NodeInfo.EnvFailedPowerSupplyCount 'Failed PowerSupply Error' = $NodeInfo.EnvFailedPowerSupplyMessage 'Over Temperature' = Switch ($NodeInfo.EnvOverTemperature) { - "True" {"High Temperature"} - "False" {"Normal Temperature"} - default {$NodeInfo.EnvOverTemperature} + "True" { "High Temperature" } + "False" { "Normal Temperature" } + default { $NodeInfo.EnvOverTemperature } } 'NVRAM Battery Healthy' = $NodeInfo.NvramBatteryStatus } @@ -74,15 +74,13 @@ function Get-AbrOntapNodesHW { $TableParams['Caption'] = "- $($TableParams.Name)" } $Outobj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapNodesSP.ps1 b/Src/Private/Get-AbrOntapNodesSP.ps1 index 118d0ae..df8cab8 100755 --- a/Src/Private/Get-AbrOntapNodesSP.ps1 +++ b/Src/Private/Get-AbrOntapNodesSP.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapNodesSP { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapNodesSP { ) begin { - Write-PscriboMessage "Collecting ONTAP Node Service-Processor information." + Write-PScriboMessage "Collecting ONTAP Node Service-Processor information." } process { @@ -37,9 +37,8 @@ function Get-AbrOntapNodesSP { 'Firmware' = $NodeSPs.FirmwareVersion 'Status' = $NodeSPs.Status } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Node.ServiceProcessor) { @@ -58,9 +57,8 @@ function Get-AbrOntapNodesSP { $TableParams['Caption'] = "- $($TableParams.Name)" } $NodeServiceProcessor | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapRepClusterPeer.ps1 b/Src/Private/Get-AbrOntapRepClusterPeer.ps1 index 151e531..e2bcc5b 100755 --- a/Src/Private/Get-AbrOntapRepClusterPeer.ps1 +++ b/Src/Private/Get-AbrOntapRepClusterPeer.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapRepClusterPeer { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapRepClusterPeer { ) begin { - Write-PscriboMessage "Collecting ONTAP Replication information." + Write-PScriboMessage "Collecting ONTAP Replication information." } process { @@ -38,9 +38,8 @@ function Get-AbrOntapRepClusterPeer { 'Status' = ($Item.Availability).toUpper() } $ReplicaObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Replication.ClusterPeer) { @@ -57,9 +56,8 @@ function Get-AbrOntapRepClusterPeer { } $ReplicaObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapRepDestinations.ps1 b/Src/Private/Get-AbrOntapRepDestinations.ps1 index 0edb46d..7ecd7d7 100755 --- a/Src/Private/Get-AbrOntapRepDestinations.ps1 +++ b/Src/Private/Get-AbrOntapRepDestinations.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapRepDestination { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapRepDestination { ) begin { - Write-PscriboMessage "Collecting ONTAP SnapMirror Destination relationship information." + Write-PScriboMessage "Collecting ONTAP SnapMirror Destination relationship information." } process { @@ -43,7 +43,7 @@ function Get-AbrOntapRepDestination { 'transition_data_protection' { 'TDP' } 'restore' { 'RST' } 'load_sharing' { 'LS' } - default {$Item.RelationshipType} + default { $Item.RelationshipType } } 'Policy Type' = $Item.PolicyType 'Status' = Switch ($Item.RelationshipStatus) { @@ -66,15 +66,13 @@ function Get-AbrOntapRepDestination { $TableParams['Caption'] = "- $($TableParams.Name)" } $ReplicaObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapRepHistory.ps1 b/Src/Private/Get-AbrOntapRepHistory.ps1 index df43988..8f04a1e 100755 --- a/Src/Private/Get-AbrOntapRepHistory.ps1 +++ b/Src/Private/Get-AbrOntapRepHistory.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapRepHistory { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapRepHistory { ) begin { - Write-PscriboMessage "Collecting ONTAP SnapMirror replication history information." + Write-PScriboMessage "Collecting ONTAP SnapMirror replication history information." } process { @@ -37,13 +37,12 @@ function Get-AbrOntapRepHistory { 'Start' = $Item.Start } $ReplicaObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Replication.History) { - $ReplicaObj | Where-Object { $_.'Result' -ne 'success'} | Set-Style -Style Warning -Property 'Result' + $ReplicaObj | Where-Object { $_.'Result' -ne 'success' } | Set-Style -Style Warning -Property 'Result' } $TableParams = @{ @@ -56,9 +55,8 @@ function Get-AbrOntapRepHistory { } $ReplicaObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapRepMediator.ps1 b/Src/Private/Get-AbrOntapRepMediator.ps1 index 147bf68..3e15382 100755 --- a/Src/Private/Get-AbrOntapRepMediator.ps1 +++ b/Src/Private/Get-AbrOntapRepMediator.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapRepMediator { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapRepMediator { ) begin { - Write-PscriboMessage "Collecting ONTAP SnapMirror Mediator relationship information." + Write-PScriboMessage "Collecting ONTAP SnapMirror Mediator relationship information." } process { @@ -36,17 +36,16 @@ function Get-AbrOntapRepMediator { 'Status' = Switch ($Item.reachable) { 'True' { 'Reachable' } 'False' { 'Unreachable' } - default {$Item.reachable} + default { $Item.reachable } } } $ReplicaObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Replication.Mediator) { - $ReplicaObj | Where-Object { $_.'Status' -eq "Unreachable"} | Set-Style -Style Critical -Property 'Status' + $ReplicaObj | Where-Object { $_.'Status' -eq "Unreachable" } | Set-Style -Style Critical -Property 'Status' } $TableParams = @{ @@ -59,9 +58,8 @@ function Get-AbrOntapRepMediator { } $ReplicaObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapRepRelations.ps1 b/Src/Private/Get-AbrOntapRepRelations.ps1 index d46a88e..50bf0f9 100755 --- a/Src/Private/Get-AbrOntapRepRelations.ps1 +++ b/Src/Private/Get-AbrOntapRepRelations.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapRepRelationship { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapRepRelationship { ) begin { - Write-PscriboMessage "Collecting ONTAP SnapMirror relationship information." + Write-PScriboMessage "Collecting ONTAP SnapMirror relationship information." } process { @@ -31,7 +31,7 @@ function Get-AbrOntapRepRelationship { try { $lag = [timespan]::fromseconds($Item.LagTime).tostring() $time = $lag.Split(".").Split(":") - $lagtime = $time[0] + " days, " + $time[1] + " hrs, " + $time[2] + " mins, " + $time[0] + " secs" + $lagtime = $time[0] + " days, " + $time[1] + " hrs, " + $time[2] + " mins, " + $time[0] + " secs" $inObj = [ordered] @{ 'Source Vserver' = $Item.SourceVserver 'Source Location' = $Item.SourceLocation @@ -45,7 +45,7 @@ function Get-AbrOntapRepRelationship { 'transition_data_protection' { 'TDP' } 'restore' { 'RST' } 'load_sharing' { 'LS' } - default {$Item.RelationshipType} + default { $Item.RelationshipType } } 'Policy' = $Item.Policy 'Policy Type' = $Item.PolicyType @@ -71,15 +71,13 @@ function Get-AbrOntapRepRelationship { $TableParams['Caption'] = "- $($TableParams.Name)" } $ReplicaObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapRepVserverPeer.ps1 b/Src/Private/Get-AbrOntapRepVserverPeer.ps1 index 42a0485..5142c13 100755 --- a/Src/Private/Get-AbrOntapRepVserverPeer.ps1 +++ b/Src/Private/Get-AbrOntapRepVserverPeer.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapRepVserverPeer { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapRepVserverPeer { ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver Peer information." + Write-PScriboMessage "Collecting ONTAP Vserver Peer information." } process { @@ -37,9 +37,8 @@ function Get-AbrOntapRepVserverPeer { 'Peer State' = $Item.PeerState } $ReplicaObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Replication.VserverPeer) { @@ -49,16 +48,15 @@ function Get-AbrOntapRepVserverPeer { $TableParams = @{ Name = "Peer - $($ClusterInfo.ClusterName)" List = $false - ColumnWidths = 20, 20, 20 ,20, 20 + ColumnWidths = 20, 20, 20 , 20, 20 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $ReplicaObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityKMS.ps1 b/Src/Private/Get-AbrOntapSecurityKMS.ps1 index 011aada..4980d0e 100755 --- a/Src/Private/Get-AbrOntapSecurityKMS.ps1 +++ b/Src/Private/Get-AbrOntapSecurityKMS.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityKMS { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapSecurityKMS { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Key Management Service information." + Write-PScriboMessage "Collecting ONTAP Security Key Management Service information." } process { @@ -35,9 +35,8 @@ function Get-AbrOntapSecurityKMS { 'Vserver' = $Item.Vserver } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -51,9 +50,8 @@ function Get-AbrOntapSecurityKMS { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityKMSExt.ps1 b/Src/Private/Get-AbrOntapSecurityKMSExt.ps1 index 7ab6910..c772041 100755 --- a/Src/Private/Get-AbrOntapSecurityKMSExt.ps1 +++ b/Src/Private/Get-AbrOntapSecurityKMSExt.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityKMSExt { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapSecurityKMSExt { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Key Management Service External information." + Write-PScriboMessage "Collecting ONTAP Security Key Management Service External information." } process { @@ -37,9 +37,8 @@ function Get-AbrOntapSecurityKMSExt { 'Vserver' = $Item.Vserver } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -53,9 +52,8 @@ function Get-AbrOntapSecurityKMSExt { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityKMSExtStatus.ps1 b/Src/Private/Get-AbrOntapSecurityKMSExtStatus.ps1 index 6e432b2..9c3a3b0 100755 --- a/Src/Private/Get-AbrOntapSecurityKMSExtStatus.ps1 +++ b/Src/Private/Get-AbrOntapSecurityKMSExtStatus.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityKMSExtStatus { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapSecurityKMSExtStatus { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Key Management Service External Status information." + Write-PScriboMessage "Collecting ONTAP Security Key Management Service External Status information." } process { @@ -36,14 +36,13 @@ function Get-AbrOntapSecurityKMSExtStatus { 'Status' = $TextInfo.ToTitleCase($Item.KeyManagerServerStatus) } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Security.KMS) { - $OutObj | Where-Object { $_.'Status' -ne 'Available'} | Set-Style -Style Critical -Property 'Status' + $OutObj | Where-Object { $_.'Status' -ne 'Available' } | Set-Style -Style Critical -Property 'Status' } $TableParams = @{ @@ -56,9 +55,8 @@ function Get-AbrOntapSecurityKMSExtStatus { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityMAP.ps1 b/Src/Private/Get-AbrOntapSecurityMAP.ps1 index 8d186a5..c4fd05c 100755 --- a/Src/Private/Get-AbrOntapSecurityMAP.ps1 +++ b/Src/Private/Get-AbrOntapSecurityMAP.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityMAP { .DESCRIPTION .NOTES - Version: 0.6.5 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSecurityMAP { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Vserver Multi-Admin Approval information." + Write-PScriboMessage "Collecting ONTAP Security Vserver Multi-Admin Approval information." } process { try { - $Data = Get-NetAppOntapAPI -uri "/api/security/multi-admin-verify/approval-groups?fields=**&return_records=true&return_timeout=15" + $Data = Get-NetAppOntapAPI -uri "/api/security/multi-admin-verify/approval-groups?fields=**&return_records=true&return_timeout=15" $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -32,36 +32,34 @@ function Get-AbrOntapSecurityMAP { $inObj = [ordered] @{ 'Name' = $Item.Name 'Approvers' = Switch ([string]::IsNullOrEmpty($Item.Approvers)) { - $true {'-'} - $false {$Item.Approvers -join ', '} - default {'-'} + $true { '-' } + $false { $Item.Approvers -join ', ' } + default { '-' } } 'Email' = Switch ([string]::IsNullOrEmpty($Item.Email)) { - $true {'-'} - $false {$Item.Email -join ', '} - default {'-'} + $true { '-' } + $false { $Item.Email -join ', ' } + default { '-' } } } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ Name = "Multi-Admin Approval - $($ClusterInfo.ClusterName)" List = $false - ColumnWidths = 34,33, 33 + ColumnWidths = 34, 33, 33 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityMAPRule.ps1 b/Src/Private/Get-AbrOntapSecurityMAPRule.ps1 index 43187e8..ce0329c 100755 --- a/Src/Private/Get-AbrOntapSecurityMAPRule.ps1 +++ b/Src/Private/Get-AbrOntapSecurityMAPRule.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityMAPRule { .DESCRIPTION .NOTES - Version: 0.6.5 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSecurityMAPRule { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Vserver Multi-Admin Approval rules information." + Write-PScriboMessage "Collecting ONTAP Security Vserver Multi-Admin Approval rules information." } process { try { - $Data = Get-NetAppOntapAPI -uri "/api/security/multi-admin-verify/rules?fields=**&return_records=true&return_timeout=15" + $Data = Get-NetAppOntapAPI -uri "/api/security/multi-admin-verify/rules?fields=**&return_records=true&return_timeout=15" $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -33,18 +33,17 @@ function Get-AbrOntapSecurityMAPRule { 'operation' = $Item.operation 'query' = ConvertTo-EmptyToFiller $Item.query 'Approval Groups' = Switch ([string]::IsNullOrEmpty($Item.approval_groups.name)) { - $true {'-'} - $false {$Item.approval_groups.name} - default {'-'} + $true { '-' } + $false { $Item.approval_groups.name } + default { '-' } } 'Required Approvers' = ConvertTo-EmptyToFiller $Item.required_approvers 'System Defined' = ConvertTo-TextYN $Item.system_defined } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -58,9 +57,8 @@ function Get-AbrOntapSecurityMAPRule { } $OutObj | Sort-Object -Property 'System Defined' | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityNAE.ps1 b/Src/Private/Get-AbrOntapSecurityNAE.ps1 index 2630904..5aa3025 100755 --- a/Src/Private/Get-AbrOntapSecurityNAE.ps1 +++ b/Src/Private/Get-AbrOntapSecurityNAE.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityNAE { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,17 +19,17 @@ function Get-AbrOntapSecurityNAE { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Aggregate NAE information." + Write-PScriboMessage "Collecting ONTAP Security Aggregate NAE information." } process { try { - $Data = Get-NcAggr -Controller $Array + $Data = Get-NcAggr -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { try { - $NAE = (Get-NcAggrOption -Name $Item.Name -Controller $Array | Where-Object {$_.Name -eq "encrypt_with_aggr_key"}).Value + $NAE = (Get-NcAggrOption -Name $Item.Name -Controller $Array | Where-Object { $_.Name -eq "encrypt_with_aggr_key" }).Value $inObj = [ordered] @{ 'Aggregate' = $Item.Name 'Aggregate Encryption' = Switch ($NAE) { @@ -42,13 +42,12 @@ function Get-AbrOntapSecurityNAE { 'State' = $TextInfo.ToTitleCase($Item.State) } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.Aggr) { - $OutObj | Where-Object { $_.'State' -ne 'Online'} | Set-Style -Style Warning -Property 'State' + $OutObj | Where-Object { $_.'State' -ne 'Online' } | Set-Style -Style Warning -Property 'State' } $TableParams = @{ @@ -61,9 +60,8 @@ function Get-AbrOntapSecurityNAE { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityNVE.ps1 b/Src/Private/Get-AbrOntapSecurityNVE.ps1 index 85518e3..3615aec 100755 --- a/Src/Private/Get-AbrOntapSecurityNVE.ps1 +++ b/Src/Private/Get-AbrOntapSecurityNVE.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityNVE { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSecurityNVE { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Volume NVE information." + Write-PScriboMessage "Collecting ONTAP Security Volume NVE information." } process { try { - $Data = Get-NcVol -Controller $Array |Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.VolumeStateAttributes.IsConstituent -ne "True"} | Select-Object -Property vserver,name,aggregate,state,@{Label = "Node"; expression = {$_.VolumeIdAttributes.Nodes}},encrypt,@{Label = "encryptionstate"; expression = {(Get-NcVolumeEncryptionConversion -Vserver $_.vserver -Volume $_.name -Controller $Array).status}} + $Data = Get-NcVol -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.VolumeStateAttributes.IsConstituent -ne "True" } | Select-Object -Property vserver, name, aggregate, state, @{Label = "Node"; expression = { $_.VolumeIdAttributes.Nodes } }, encrypt, @{Label = "encryptionstate"; expression = { (Get-NcVolumeEncryptionConversion -Vserver $_.vserver -Volume $_.name -Controller $Array).status } } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -36,13 +36,12 @@ function Get-AbrOntapSecurityNVE { 'State' = $TextInfo.ToTitleCase($Item.State) } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.Aggr) { - $OutObj | Where-Object { $_.'State' -ne 'Online'} | Set-Style -Style Warning -Property 'State' + $OutObj | Where-Object { $_.'State' -ne 'Online' } | Set-Style -Style Warning -Property 'State' } $TableParams = @{ @@ -55,9 +54,8 @@ function Get-AbrOntapSecurityNVE { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecuritySSLDetailed.ps1 b/Src/Private/Get-AbrOntapSecuritySSLDetailed.ps1 index aaca11f..f34bec7 100755 --- a/Src/Private/Get-AbrOntapSecuritySSLDetailed.ps1 +++ b/Src/Private/Get-AbrOntapSecuritySSLDetailed.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecuritySSLDetailed { .DESCRIPTION .NOTES - Version: 0.6.4 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSecuritySSLDetailed { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Vserver SSL Detailed information." + Write-PScriboMessage "Collecting ONTAP Security Vserver SSL Detailed information." } process { try { - $Data = Get-NcSecurityCertificate -Controller $Array | Where-Object {$_.Type -eq "server" -and $_.Vserver -notin $Options.Exclude.Vserver} + $Data = Get-NcSecurityCertificate -Controller $Array | Where-Object { $_.Type -eq "server" -and $_.Vserver -notin $Options.Exclude.Vserver } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -35,16 +35,15 @@ function Get-AbrOntapSecuritySSLDetailed { 'Hash Function' = $Item.HashFunction 'Serial Number' = $Item.SerialNumber 'Expiration' = Switch ([string]::IsNullOrEmpty($Item.ExpirationDateDT)) { - $true {'-'} - $false {($Item.ExpirationDateDT).ToString().Split(" ")[0]} - default {'Unknown'} + $true { '-' } + $false { ($Item.ExpirationDateDT).ToString().Split(" ")[0] } + default { 'Unknown' } } 'Vserver' = $Item.Vserver } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -58,9 +57,8 @@ function Get-AbrOntapSecuritySSLDetailed { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecuritySSLVserver.ps1 b/Src/Private/Get-AbrOntapSecuritySSLVserver.ps1 index 4f97fb6..58b2a9d 100755 --- a/Src/Private/Get-AbrOntapSecuritySSLVserver.ps1 +++ b/Src/Private/Get-AbrOntapSecuritySSLVserver.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecuritySSLVserver { .DESCRIPTION .NOTES - Version: 0.6.4 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSecuritySSLVserver { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Vserver SSL information." + Write-PScriboMessage "Collecting ONTAP Security Vserver SSL information." } process { try { - $Data = Get-NcSecuritySsl -Controller $Array | Where-Object {$_.Vserver -notin $Options.Exclude.Vserver} + $Data = Get-NcSecuritySsl -Controller $Array | Where-Object { $_.Vserver -notin $Options.Exclude.Vserver } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -38,9 +38,8 @@ function Get-AbrOntapSecuritySSLVserver { 'Vserver' = $Item.Vserver } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapSecuritySSLVserver { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecuritySnapLockAggr.ps1 b/Src/Private/Get-AbrOntapSecuritySnapLockAggr.ps1 index 4f6e7bb..3c52902 100755 --- a/Src/Private/Get-AbrOntapSecuritySnapLockAggr.ps1 +++ b/Src/Private/Get-AbrOntapSecuritySnapLockAggr.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecuritySnapLockAggr { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSecuritySnapLockAggr { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Aggregate Snaplock Type information." + Write-PScriboMessage "Collecting ONTAP Security Aggregate Snaplock Type information." } process { try { - $Data = Get-NcAggr -Controller $Array | Where-Object {$_.AggrRaidAttributes.HasLocalRoot -ne 'True'} + $Data = Get-NcAggr -Controller $Array | Where-Object { $_.AggrRaidAttributes.HasLocalRoot -ne 'True' } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -35,9 +35,8 @@ function Get-AbrOntapSecuritySnapLockAggr { 'Snaplock Type' = $TextInfo.ToTitleCase($SnapLockType.SnaplockType) } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -51,9 +50,8 @@ function Get-AbrOntapSecuritySnapLockAggr { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecuritySnapLockClock.ps1 b/Src/Private/Get-AbrOntapSecuritySnapLockClock.ps1 index cbdc69f..2e5e159 100755 --- a/Src/Private/Get-AbrOntapSecuritySnapLockClock.ps1 +++ b/Src/Private/Get-AbrOntapSecuritySnapLockClock.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecuritySnapLockClock { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSecuritySnapLockClock { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Snaplock compliance clock information." + Write-PScriboMessage "Collecting ONTAP Security Snaplock compliance clock information." } process { try { - $Data = Get-NcNode -Controller $Array + $Data = Get-NcNode -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -38,9 +38,8 @@ function Get-AbrOntapSecuritySnapLockClock { } } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapSecuritySnapLockClock { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecuritySnapLockVol.ps1 b/Src/Private/Get-AbrOntapSecuritySnapLockVol.ps1 index 8d843ab..21459b8 100755 --- a/Src/Private/Get-AbrOntapSecuritySnapLockVol.ps1 +++ b/Src/Private/Get-AbrOntapSecuritySnapLockVol.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecuritySnapLockVol { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,26 +19,25 @@ function Get-AbrOntapSecuritySnapLockVol { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Volume Snaplock Type information." + Write-PScriboMessage "Collecting ONTAP Security Volume Snaplock Type information." } process { try { - $Data = Get-NcVol -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0'} + $Data = Get-NcVol -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } $OutObj = @() if ($Data) { foreach ($Item in $Data) { try { - $SnapLockType = Get-Ncvol $Item.Name -Controller $Array | Select-Object -ExpandProperty VolumeSnaplockAttributes + $SnapLockType = Get-NcVol $Item.Name -Controller $Array | Select-Object -ExpandProperty VolumeSnaplockAttributes $inObj = [ordered] @{ 'Volume' = $Item.Name 'Aggregate' = $Item.Aggregate 'Snaplock Type' = $TextInfo.ToTitleCase($SnapLockType.SnaplockType) } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -52,9 +51,8 @@ function Get-AbrOntapSecuritySnapLockVol { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecuritySnapLockVollAttr.ps1 b/Src/Private/Get-AbrOntapSecuritySnapLockVollAttr.ps1 index 4466fd6..dda9191 100755 --- a/Src/Private/Get-AbrOntapSecuritySnapLockVollAttr.ps1 +++ b/Src/Private/Get-AbrOntapSecuritySnapLockVollAttr.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecuritySnapLockVollAttr { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,18 +19,18 @@ function Get-AbrOntapSecuritySnapLockVollAttr { ) begin { - Write-PscriboMessage "Collecting ONTAP Security Snaplock volume attributes information." + Write-PScriboMessage "Collecting ONTAP Security Snaplock volume attributes information." } process { try { - $Data = Get-NcVserver -Controller $Array | Where-Object {$_.VserverType -eq "data"} - $VolumeFilter = Get-Ncvol -Controller $Array | Where-Object {$_.VolumeSnaplockAttributes.SnaplockType -in "enterprise","compliance"} + $Data = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" } + $VolumeFilter = Get-NcVol -Controller $Array | Where-Object { $_.VolumeSnaplockAttributes.SnaplockType -in "enterprise", "compliance" } $OutObj = @() if ($Data -and $VolumeFilter) { foreach ($Item in $Data) { try { - $VolumeFilter = Get-Ncvol -VserverContext $Item.Vserver -Controller $Array | Where-Object {$_.VolumeSnaplockAttributes.SnaplockType -in "enterprise","compliance"} + $VolumeFilter = Get-NcVol -VserverContext $Item.Vserver -Controller $Array | Where-Object { $_.VolumeSnaplockAttributes.SnaplockType -in "enterprise", "compliance" } foreach ($vol in $VolumeFilter) { $SnapLockVolAttr = Get-NcSnaplockVolAttr -Volume $vol.Name -VserverContext $Item.VserverName -Controller $Array $inObj = [ordered] @{ @@ -61,15 +61,13 @@ function Get-AbrOntapSecuritySnapLockVollAttr { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSecurityUsers.ps1 b/Src/Private/Get-AbrOntapSecurityUsers.ps1 index 71a6ebb..03a618d 100755 --- a/Src/Private/Get-AbrOntapSecurityUsers.ps1 +++ b/Src/Private/Get-AbrOntapSecurityUsers.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSecurityUser { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapSecurityUser { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Security Local Users information." + Write-PScriboMessage "Collecting ONTAP Security Local Users information." } process { try { - $Data = Get-NcUser -Vserver $Vserver -Controller $Array + $Data = Get-NcUser -Vserver $Vserver -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -41,13 +41,12 @@ function Get-AbrOntapSecurityUser { 'Locked' = ConvertTo-TextYN $Item.IsLocked } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Security.Users) { - $OutObj | Where-Object { $_.'Locked' -eq 'Yes' -and $_.'User Name' -ne "vsadmin"} | Set-Style -Style Warning -Property 'Locked' + $OutObj | Where-Object { $_.'Locked' -eq 'Yes' -and $_.'User Name' -ne "vsadmin" } | Set-Style -Style Warning -Property 'Locked' } $TableParams = @{ @@ -60,9 +59,8 @@ function Get-AbrOntapSecurityUser { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapStorageAGGR.ps1 b/Src/Private/Get-AbrOntapStorageAGGR.ps1 index a0ad721..0d64dd0 100755 --- a/Src/Private/Get-AbrOntapStorageAGGR.ps1 +++ b/Src/Private/Get-AbrOntapStorageAGGR.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapStorageAGGR { .DESCRIPTION .NOTES - Version: 0.6.5 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapStorageAGGR { ) begin { - Write-PscriboMessage "Collecting ONTAP storage aggregate information." + Write-PScriboMessage "Collecting ONTAP storage aggregate information." } process { @@ -28,36 +28,35 @@ function Get-AbrOntapStorageAGGR { if ($AggrSpace) { $AggrSpaceSummary = foreach ($Aggr in $AggrSpace) { try { - $RootAggr = Get-NcAggr $Aggr.Name -Controller $Array | ForEach-Object{ $_.AggrRaidAttributes.HasLocalRoot } + $RootAggr = Get-NcAggr $Aggr.Name -Controller $Array | ForEach-Object { $_.AggrRaidAttributes.HasLocalRoot } [PSCustomObject] @{ 'Name' = $Aggr.Name 'Capacity' = Switch ([string]::IsNullOrEmpty($Aggr.Totalsize)) { - $true {'Unknown'} - $false {$Aggr.Totalsize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'Unknown'} + $true { 'Unknown' } + $false { $Aggr.Totalsize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { 'Unknown' } } 'Available' = Switch ([string]::IsNullOrEmpty($Aggr.Available)) { - $true {'Unknown'} - $false {$Aggr.Available | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'Unknown'} + $true { 'Unknown' } + $false { $Aggr.Available | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { 'Unknown' } } 'Used' = Switch ([string]::IsNullOrEmpty($Aggr.Used)) { - $true {'Unknown'} - $false {$Aggr.Used | ConvertTo-FormattedNumber -Type Percent -ErrorAction SilentlyContinue} - default {'Unknown'} + $true { 'Unknown' } + $false { $Aggr.Used | ConvertTo-FormattedNumber -Type Percent -ErrorAction SilentlyContinue } + default { 'Unknown' } } 'Disk Count' = $Aggr.Disks 'Root' = ConvertTo-TextYN $RootAggr 'Raid Type' = Switch ([string]::IsNullOrEmpty($Aggr.RaidType)) { - $true {'Unknown'} - $false {($Aggr.RaidType.Split(",")[0]).ToUpper()} - default {'Unknown'} + $true { 'Unknown' } + $false { ($Aggr.RaidType.Split(",")[0]).ToUpper() } + default { 'Unknown' } } 'State' = $Aggr.State } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.Aggr) { @@ -84,27 +83,26 @@ function Get-AbrOntapStorageAGGR { [PSCustomObject] @{ 'Name' = $Spare.Disk 'Capacity' = Switch ([string]::IsNullOrEmpty($Spare.TotalSize)) { - $true {'-'} - $false {$Spare.TotalSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Spare.TotalSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'Root Usable' = Switch ([string]::IsNullOrEmpty($Spare.LocalUsableRootSize)) { - $true {'-'} - $false {$Spare.LocalUsableRootSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Spare.LocalUsableRootSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'Data Usable' = Switch ([string]::IsNullOrEmpty($Spare.LocalUsableDataSize)) { - $true {'-'} - $false {$Spare.LocalUsableDataSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Spare.LocalUsableDataSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'Shared Disk' = ConvertTo-TextYN $Spare.IsDiskShared 'Disk Zeroed' = ConvertTo-TextYN $Spare.IsDiskZeroed 'Owner' = $Spare.OriginalOwner } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.Aggr) { @@ -121,21 +119,20 @@ function Get-AbrOntapStorageAGGR { $AggrSpareSummary | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { if ($InfoLevel.Storage -ge 2) { Section -Style Heading4 'Aggregate Options' { - $Aggregates = Get-NcAggr -Controller $Array | Where-Object {!$_.AggrRaidAttributes.HasLocalRoot} + $Aggregates = Get-NcAggr -Controller $Array | Where-Object { !$_.AggrRaidAttributes.HasLocalRoot } foreach ($Aggregate in $Aggregates) { try { Section -Style Heading5 "$($Aggregate.Name) Options" { $OutObj = @() $Options = Get-NcAggrOption -Controller $Array -Name $Aggregate.Name $Option = @{} - $Options | ForEach-Object {$Option.add($_.Name, $_.Value)} + $Options | ForEach-Object { $Option.add($_.Name, $_.Value) } $inObj = [ordered] @{ 'azcs_read_optimization' = $TextInfo.ToTitleCase($Option.azcs_read_optimization) 'dir_holes' = ConvertTo-TextYN $Option.dir_holes @@ -178,20 +175,17 @@ function Get-AbrOntapStorageAGGR { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapStorageFabricPool.ps1 b/Src/Private/Get-AbrOntapStorageFabricPool.ps1 index c1c8036..b05d8bf 100755 --- a/Src/Private/Get-AbrOntapStorageFabricPool.ps1 +++ b/Src/Private/Get-AbrOntapStorageFabricPool.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapStorageFabricPool { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapStorageFabricPool { ) begin { - Write-PscriboMessage "Collecting ONTAP Aggregate FabriPool information." + Write-PScriboMessage "Collecting ONTAP Aggregate FabriPool information." } process { try { - $Data = Get-NcAggrObjectStore -Controller $Array + $Data = Get-NcAggrObjectStore -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -38,9 +38,8 @@ function Get-AbrOntapStorageFabricPool { 'Status' = $Item.ObjectStoreAvailability } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Storage.FabricPool) { @@ -57,9 +56,8 @@ function Get-AbrOntapStorageFabricPool { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapStorageFabricPoolConfig.ps1 b/Src/Private/Get-AbrOntapStorageFabricPoolConfig.ps1 index 0b810af..efcec6f 100755 --- a/Src/Private/Get-AbrOntapStorageFabricPoolConfig.ps1 +++ b/Src/Private/Get-AbrOntapStorageFabricPoolConfig.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapEfficiencyAggrConfig { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapEfficiencyAggrConfig { ) begin { - Write-PscriboMessage "Collecting ONTAP Aggregate FabriPool Object Store information." + Write-PScriboMessage "Collecting ONTAP Aggregate FabriPool Object Store information." } process { try { - $Data = Get-NcAggrObjectStoreConfig -Controller $Array + $Data = Get-NcAggrObjectStoreConfig -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -49,15 +49,13 @@ function Get-AbrOntapEfficiencyAggrConfig { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigBackup.ps1 b/Src/Private/Get-AbrOntapSysConfigBackup.ps1 index d8fb326..79e9a41 100755 --- a/Src/Private/Get-AbrOntapSysConfigBackup.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigBackup.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigBackup { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapSysConfigBackup { [Parameter ( Position = 0, Mandatory)] - [string] - $Node + [string] + $Node ) begin { - Write-PscriboMessage "Collecting ONTAP System Configuration Backups information." + Write-PScriboMessage "Collecting ONTAP System Configuration Backups information." } process { try { - $Data = Get-NcConfigBackup -Node $Node -Controller $Array + $Data = Get-NcConfigBackup -Node $Node -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -41,9 +41,8 @@ function Get-AbrOntapSysConfigBackup { 'Is Auto' = ConvertTo-TextYN $Item.IsAuto } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -57,9 +56,8 @@ function Get-AbrOntapSysConfigBackup { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigBackupURL.ps1 b/Src/Private/Get-AbrOntapSysConfigBackupURL.ps1 index c753d28..dd986df 100755 --- a/Src/Private/Get-AbrOntapSysConfigBackupURL.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigBackupURL.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigBackupURL { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigBackupURL { ) begin { - Write-PscriboMessage "Collecting ONTAP System Configuration Backup Setting information." + Write-PScriboMessage "Collecting ONTAP System Configuration Backup Setting information." } process { try { - $Data = Get-NcConfigBackupUrl -Controller $Array + $Data = Get-NcConfigBackupUrl -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -40,15 +40,14 @@ function Get-AbrOntapSysConfigBackupURL { } } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.System.Backup) { - $OutObj | Where-Object { $_.'Url' -eq 'Not Configured'} | Set-Style -Style Warning -Property 'Url' - $OutObj | Where-Object { $_.'Username' -eq 'Not Configured'} | Set-Style -Style Warning -Property 'Username' + $OutObj | Where-Object { $_.'Url' -eq 'Not Configured' } | Set-Style -Style Warning -Property 'Url' + $OutObj | Where-Object { $_.'Username' -eq 'Not Configured' } | Set-Style -Style Warning -Property 'Username' } $TableParams = @{ @@ -61,9 +60,8 @@ function Get-AbrOntapSysConfigBackupURL { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigDNS.ps1 b/Src/Private/Get-AbrOntapSysConfigDNS.ps1 index eef5e79..a2b16a8 100755 --- a/Src/Private/Get-AbrOntapSysConfigDNS.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigDNS.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigDNS { .DESCRIPTION .NOTES - Version: 0.6.4 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigDNS { ) begin { - Write-PscriboMessage "Collecting ONTAP System DNS Configuration information." + Write-PScriboMessage "Collecting ONTAP System DNS Configuration information." } process { try { - $Data = Get-NcNetDns -Controller $Array | Where-Object {$_.Vserver -notin $Options.Exclude.Vserver} + $Data = Get-NcNetDns -Controller $Array | Where-Object { $_.Vserver -notin $Options.Exclude.Vserver } $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -37,9 +37,8 @@ function Get-AbrOntapSysConfigDNS { 'Timeout/s' = $Item.Timeout } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.System.DNS) { @@ -57,9 +56,8 @@ function Get-AbrOntapSysConfigDNS { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigEMS.ps1 b/Src/Private/Get-AbrOntapSysConfigEMS.ps1 index cb53c8a..ad6a120 100755 --- a/Src/Private/Get-AbrOntapSysConfigEMS.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigEMS.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigEMS { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapSysConfigEMS { [Parameter ( Position = 0, Mandatory)] - [string] - $Node + [string] + $Node ) begin { - Write-PscriboMessage "Collecting ONTAP System EMS Messages information." + Write-PScriboMessage "Collecting ONTAP System EMS Messages information." } process { try { - $Data = Get-NcEmsMessage -Node $Node -Severity "emergency","alert" -Controller $Array | Select-Object -First 30 + $Data = Get-NcEmsMessage -Node $Node -Severity "emergency", "alert" -Controller $Array | Select-Object -First 30 $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -39,9 +39,8 @@ function Get-AbrOntapSysConfigEMS { 'Event' = $Item.Event } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -55,9 +54,8 @@ function Get-AbrOntapSysConfigEMS { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigEMSSettings.ps1 b/Src/Private/Get-AbrOntapSysConfigEMSSettings.ps1 index 9bba979..f53e425 100755 --- a/Src/Private/Get-AbrOntapSysConfigEMSSettings.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigEMSSettings.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigEMSSetting { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigEMSSetting { ) begin { - Write-PscriboMessage "Collecting ONTAP System EMS Settings information." + Write-PScriboMessage "Collecting ONTAP System EMS Settings information." } process { try { - $Data = Get-NcEmsDestination -Controller $Array + $Data = Get-NcEmsDestination -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -53,9 +53,8 @@ function Get-AbrOntapSysConfigEMSSetting { } } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -69,12 +68,11 @@ function Get-AbrOntapSysConfigEMSSetting { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { - $Data = Get-NcAudit -Controller $Array + $Data = Get-NcAudit -Controller $Array if ($Data) { Section -Style Heading4 "Audit Settings" { Paragraph "The following section provides information about Audit Setting from $($ClusterInfo.ClusterName)." @@ -88,9 +86,8 @@ function Get-AbrOntapSysConfigEMSSetting { 'Enable CLI Get request' = ConvertTo-TextYN $Item.CliGet } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -104,7 +101,7 @@ function Get-AbrOntapSysConfigEMSSetting { } $OutObj | Table @TableParams try { - $Data = Get-NcClusterLogForward -Controller $Array + $Data = Get-NcClusterLogForward -Controller $Array if ($Data) { Section -Style Heading4 "Audit Log Destinations" { $OutObj = @() @@ -118,9 +115,8 @@ function Get-AbrOntapSysConfigEMSSetting { 'Server Verification' = ConvertTo-TextYN $Item.VerifyServerSpecified } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -135,15 +131,13 @@ function Get-AbrOntapSysConfigEMSSetting { $OutObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigImage.ps1 b/Src/Private/Get-AbrOntapSysConfigImage.ps1 index 604ba48..25e2347 100755 --- a/Src/Private/Get-AbrOntapSysConfigImage.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigImage.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigImage { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigImage { ) begin { - Write-PscriboMessage "Collecting ONTAP System Image information." + Write-PScriboMessage "Collecting ONTAP System Image information." } process { try { - $Data = Get-NcSystemImage -Controller $Array + $Data = Get-NcSystemImage -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -38,9 +38,8 @@ function Get-AbrOntapSysConfigImage { 'Version' = $Item.Version } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapSysConfigImage { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigNTP.ps1 b/Src/Private/Get-AbrOntapSysConfigNTP.ps1 index a2c1dd2..1233c8e 100755 --- a/Src/Private/Get-AbrOntapSysConfigNTP.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigNTP.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigNTP { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigNTP { ) begin { - Write-PscriboMessage "Collecting ONTAP System NTP information." + Write-PScriboMessage "Collecting ONTAP System NTP information." } process { try { - $Data = Get-NcNtpServer -Controller $Array + $Data = Get-NcNtpServer -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -36,9 +36,8 @@ function Get-AbrOntapSysConfigNTP { 'Authentication Enabled' = ConvertTo-TextYN $Item.IsAuthenticationEnabled } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -52,9 +51,8 @@ function Get-AbrOntapSysConfigNTP { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigNTPHost.ps1 b/Src/Private/Get-AbrOntapSysConfigNTPHost.ps1 index c875aca..d32b04e 100755 --- a/Src/Private/Get-AbrOntapSysConfigNTPHost.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigNTPHost.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigNTPHost { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigNTPHost { ) begin { - Write-PscriboMessage "Collecting ONTAP System NTP Host Status information." + Write-PScriboMessage "Collecting ONTAP System NTP Host Status information." } process { try { - $Data = Get-NcNtpServerStatus -Controller $Array + $Data = Get-NcNtpServerStatus -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -37,13 +37,12 @@ function Get-AbrOntapSysConfigNTPHost { 'Peer Status' = Switch ($Item.IsPeerReachable) { 'True' { 'Reachable' } 'False' { 'Unreachable' } - default {$Item.IsPeerReachable} + default { $Item.IsPeerReachable } } } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.System.NTP) { @@ -60,9 +59,8 @@ function Get-AbrOntapSysConfigNTPHost { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigSNMP.ps1 b/Src/Private/Get-AbrOntapSysConfigSNMP.ps1 index 1d3d516..665ff5f 100755 --- a/Src/Private/Get-AbrOntapSysConfigSNMP.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigSNMP.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigSNMP { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigSNMP { ) begin { - Write-PscriboMessage "Collecting ONTAP System SNMP Configuration information." + Write-PScriboMessage "Collecting ONTAP System SNMP Configuration information." } process { try { - $Data = Get-NcSnmp -Controller $Array + $Data = Get-NcSnmp -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -37,13 +37,12 @@ function Get-AbrOntapSysConfigSNMP { 'Status' = Switch ($Item.IsTrapEnabled) { 'True' { 'Enabled' } 'False' { 'Disabled' } - default {$Item.IsTrapEnabled} + default { $Item.IsTrapEnabled } } } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -57,9 +56,8 @@ function Get-AbrOntapSysConfigSNMP { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigTZ.ps1 b/Src/Private/Get-AbrOntapSysConfigTZ.ps1 index e1f6a14..5d09678 100755 --- a/Src/Private/Get-AbrOntapSysConfigTZ.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigTZ.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigTZ { .DESCRIPTION .NOTES - Version: 0.6.5 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigTZ { ) begin { - Write-PscriboMessage "Collecting ONTAP System TimeZone information." + Write-PScriboMessage "Collecting ONTAP System TimeZone information." } process { try { - $Data = Get-NcTimezone -Controller $Array + $Data = Get-NcTimezone -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -38,9 +38,8 @@ function Get-AbrOntapSysConfigTZ { 'Current Time' = $CurrentTime } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapSysConfigTZ { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapSysConfigWebStatus.ps1 b/Src/Private/Get-AbrOntapSysConfigWebStatus.ps1 index bdcda1b..23aa96e 100755 --- a/Src/Private/Get-AbrOntapSysConfigWebStatus.ps1 +++ b/Src/Private/Get-AbrOntapSysConfigWebStatus.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapSysConfigWebStatus { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapSysConfigWebStatus { ) begin { - Write-PscriboMessage "Collecting ONTAP System Web Service information." + Write-PScriboMessage "Collecting ONTAP System Web Service information." } process { try { - $Data = Get-NcSystemServicesWebNode -Controller $Array + $Data = Get-NcSystemServicesWebNode -Controller $Array $OutObj = @() if ($Data) { foreach ($Item in $Data) { @@ -39,9 +39,8 @@ function Get-AbrOntapSysConfigWebStatus { 'Status Code' = $Item.StatusCode } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.System.DNS) { @@ -59,9 +58,8 @@ function Get-AbrOntapSysConfigWebStatus { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCGLun.ps1 b/Src/Private/Get-AbrOntapVserverCGLun.ps1 index 55879eb..edbe0d8 100755 --- a/Src/Private/Get-AbrOntapVserverCGLun.ps1 +++ b/Src/Private/Get-AbrOntapVserverCGLun.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCGLun { .DESCRIPTION .NOTES - Version: 0.6.5 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,11 +18,11 @@ function Get-AbrOntapVserverCGLun { [Parameter ( Position = 0, Mandatory)] - $CGObj + $CGObj ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver Consistency Groups lun information." + Write-PScriboMessage "Collecting ONTAP Vserver Consistency Groups lun information." } process { @@ -35,14 +35,14 @@ function Get-AbrOntapVserverCGLun { $inObj = [ordered] @{ 'Name' = $Item.Name.Split('/')[3] 'Capacity' = Switch ([string]::IsNullOrEmpty($Item.space.size)) { - $true {'-'} - $false {$Item.space.size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Item.space.size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'Used' = Switch ([string]::IsNullOrEmpty($Item.space.used)) { - $true {'-'} - $false {$Item.space.used | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Item.space.used | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'OS Type' = ConvertTo-EmptyToFiller $Item.os_type 'Volume State' = $Item.status.container_state @@ -53,17 +53,16 @@ function Get-AbrOntapVserverCGLun { } $CGLunObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.CG) { - $CGLunObj | Where-Object { $_.'Volume State' -ne 'online'} | Set-Style -Style Warning -Property 'Volume State' - $CGLunObj | Where-Object { $_.'Mapped' -eq 'No'} | Set-Style -Style Warning -Property 'Mapped' - $CGLunObj | Where-Object { $_.'Read Only' -eq 'Yes'} | Set-Style -Style Warning -Property 'Read Only' - $CGLunObj | Where-Object { $_.'State' -eq 'offline'} | Set-Style -Style Warning -Property 'State' + $CGLunObj | Where-Object { $_.'Volume State' -ne 'online' } | Set-Style -Style Warning -Property 'Volume State' + $CGLunObj | Where-Object { $_.'Mapped' -eq 'No' } | Set-Style -Style Warning -Property 'Mapped' + $CGLunObj | Where-Object { $_.'Read Only' -eq 'Yes' } | Set-Style -Style Warning -Property 'Read Only' + $CGLunObj | Where-Object { $_.'State' -eq 'offline' } | Set-Style -Style Warning -Property 'State' } $TableParams = @{ @@ -76,9 +75,8 @@ function Get-AbrOntapVserverCGLun { } $CGLunObj | Sort-Object -Property Name | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCGSummary.ps1 b/Src/Private/Get-AbrOntapVserverCGSummary.ps1 index 71f7872..597232d 100755 --- a/Src/Private/Get-AbrOntapVserverCGSummary.ps1 +++ b/Src/Private/Get-AbrOntapVserverCGSummary.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCGSummary { .DESCRIPTION .NOTES - Version: 0.6.5 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCGSummary { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver Consistency Groups information." + Write-PScriboMessage "Collecting ONTAP Vserver Consistency Groups information." } process { @@ -36,31 +36,30 @@ function Get-AbrOntapVserverCGSummary { $inObj = [ordered] @{ 'Name' = $Item.Name 'Capacity' = Switch ([string]::IsNullOrEmpty($Item.space.size)) { - $true {'-'} - $false {$Item.space.size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Item.space.size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'Available' = Switch ([string]::IsNullOrEmpty($Item.space.available)) { - $true {'-'} - $false {$Item.space.available | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Item.space.available | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'Used' = Switch ([string]::IsNullOrEmpty($Item.space.used)) { - $true {'-'} - $false {$Item.space.used | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue} - default {'-'} + $true { '-' } + $false { $Item.space.used | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } } 'Replicated' = ConvertTo-TextYN $Item.replicated 'Lun Count' = Switch ([string]::IsNullOrEmpty($Item.luns.name)) { - $true {'-'} - $false {($Item.luns.name).count} - default {'-'} + $true { '-' } + $false { ($Item.luns.name).count } + default { '-' } } } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -74,9 +73,8 @@ function Get-AbrOntapVserverCGSummary { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSDC.ps1 b/Src/Private/Get-AbrOntapVserverCIFSDC.ps1 index c31aeb5..2136918 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSDC.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSDC.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSDC { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSDC { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP CIFS Domain Controller Properties information." + Write-PScriboMessage "Collecting ONTAP CIFS Domain Controller Properties information." } process { @@ -42,9 +42,8 @@ function Get-AbrOntapVserverCIFSDC { 'Status' = $Item.Status } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -58,9 +57,8 @@ function Get-AbrOntapVserverCIFSDC { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSLGMembers.ps1 b/Src/Private/Get-AbrOntapVserverCIFSLGMembers.ps1 index 1d0378d..73e02db 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSLGMembers.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSLGMembers.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSLGMember { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSLGMember { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP CIFS Local Group Members information." + Write-PScriboMessage "Collecting ONTAP CIFS Local Group Members information." } process { @@ -38,9 +38,8 @@ function Get-AbrOntapVserverCIFSLGMember { 'Description' = $Item.Member } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapVserverCIFSLGMember { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSLocalGroup.ps1 b/Src/Private/Get-AbrOntapVserverCIFSLocalGroup.ps1 index 1cbb226..70350fd 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSLocalGroup.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSLocalGroup.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSLocalGroup { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSLocalGroup { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP CIFS Local Group information." + Write-PScriboMessage "Collecting ONTAP CIFS Local Group information." } process { @@ -38,9 +38,8 @@ function Get-AbrOntapVserverCIFSLocalGroup { 'Description' = $Item.Description } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapVserverCIFSLocalGroup { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSOptions.ps1 b/Src/Private/Get-AbrOntapVserverCIFSOptions.ps1 index 90ba77e..5a1d499 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSOptions.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSOptions.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSOption { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSOption { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver CIFS Option information." + Write-PScriboMessage "Collecting ONTAP Vserver CIFS Option information." } process { @@ -67,14 +67,12 @@ function Get-AbrOntapVserverCIFSOption { 'Smb1 Max Buffer Size' = $Item.Smb1MaxBufferSize } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -88,9 +86,8 @@ function Get-AbrOntapVserverCIFSOption { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSSecurity.ps1 b/Src/Private/Get-AbrOntapVserverCIFSSecurity.ps1 index 1a78d9b..9220a3e 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSSecurity.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSSecurity.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSSecurity { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSSecurity { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver CIFS Security information." + Write-PScriboMessage "Collecting ONTAP Vserver CIFS Security information." } process { @@ -46,12 +46,10 @@ function Get-AbrOntapVserverCIFSSecurity { 'Lm Compatibility Level' = $SVM.LmCompatibilityLevel } $VserverObj += [pscustomobject]$inobj - } - else {continue} + } else { continue } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -65,9 +63,8 @@ function Get-AbrOntapVserverCIFSSecurity { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSSession.ps1 b/Src/Private/Get-AbrOntapVserverCIFSSession.ps1 index ad4bb58..3c434d1 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSSession.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSSession.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSSession { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSSession { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP CIFS Session information." + Write-PScriboMessage "Collecting ONTAP CIFS Session information." } process { @@ -41,9 +41,8 @@ function Get-AbrOntapVserverCIFSSession { 'User' = $Item.WindowsUser } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -57,9 +56,8 @@ function Get-AbrOntapVserverCIFSSession { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSShare.ps1 b/Src/Private/Get-AbrOntapVserverCIFSShare.ps1 index 44b27f0..e617292 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSShare.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSShare.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSShare { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSShare { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP CIFS Share information." + Write-PScriboMessage "Collecting ONTAP CIFS Share information." } process { @@ -39,9 +39,8 @@ function Get-AbrOntapVserverCIFSShare { 'Path' = $Item.Path } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -55,9 +54,8 @@ function Get-AbrOntapVserverCIFSShare { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSShareProp.ps1 b/Src/Private/Get-AbrOntapVserverCIFSShareProp.ps1 index 76845a5..85c0406 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSShareProp.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSShareProp.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSShareProp { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSShareProp { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP CIFS Share Properties information." + Write-PScriboMessage "Collecting ONTAP CIFS Share Properties information." } process { @@ -39,9 +39,8 @@ function Get-AbrOntapVserverCIFSShareProp { 'Share Properties' = ($Item).ShareProperties -join ', ' } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -55,9 +54,8 @@ function Get-AbrOntapVserverCIFSShareProp { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverCIFSSummary.ps1 b/Src/Private/Get-AbrOntapVserverCIFSSummary.ps1 index 699b339..51c5e2c 100755 --- a/Src/Private/Get-AbrOntapVserverCIFSSummary.ps1 +++ b/Src/Private/Get-AbrOntapVserverCIFSSummary.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverCIFSSummary { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverCIFSSummary { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver CIFS information." + Write-PScriboMessage "Collecting ONTAP Vserver CIFS information." } process { @@ -34,7 +34,7 @@ function Get-AbrOntapVserverCIFSSummary { foreach ($Item in $VserverData) { $CIFSSVM = Get-NcCifsServerStatus -VserverName $Item.Vserver -Controller $Array foreach ($SVM in $CIFSSVM) { - try{ + try { $inObj = [ordered] @{ 'Node Name' = $SVM.NodeName 'Cifs Domain Name' = $SVM.CifsDomainName @@ -61,16 +61,14 @@ function Get-AbrOntapVserverCIFSSummary { $TableParams['Caption'] = "- $($TableParams.Name)" } $VserverObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 b/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 index 797d224..9aadbd4 100755 --- a/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 +++ b/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverFcpAdapter { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapVserverFcpAdapter { ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver FCP adapter information." + Write-PScriboMessage "Collecting ONTAP Vserver FCP adapter information." } process { try { - $VserverData = Get-NcFcpAdapter -Controller $Array | Where-Object {$_.PhysicalProtocol -ne 'ethernet' } + $VserverData = Get-NcFcpAdapter -Controller $Array | Where-Object { $_.PhysicalProtocol -ne 'ethernet' } $VserverObj = @() if ($VserverData) { foreach ($Item in $VserverData) { @@ -37,13 +37,12 @@ function Get-AbrOntapVserverFcpAdapter { 'Status' = Switch ($Item.State) { 'online' { 'Up' } 'offline' { 'Down' } - default {$Item.State} + default { $Item.State } } } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.FCP) { @@ -59,9 +58,8 @@ function Get-AbrOntapVserverFcpAdapter { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverFcpInterface.ps1 b/Src/Private/Get-AbrOntapVserverFcpInterface.ps1 index d3d6e02..e200fd3 100755 --- a/Src/Private/Get-AbrOntapVserverFcpInterface.ps1 +++ b/Src/Private/Get-AbrOntapVserverFcpInterface.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverFcpInterface { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverFcpInterface { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver FCP interface information." + Write-PScriboMessage "Collecting ONTAP Vserver FCP interface information." } process { @@ -39,9 +39,8 @@ function Get-AbrOntapVserverFcpInterface { 'Home Port' = $Item.CurrentPort } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -55,9 +54,8 @@ function Get-AbrOntapVserverFcpInterface { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverFcpSummary.ps1 b/Src/Private/Get-AbrOntapVserverFcpSummary.ps1 index 41c1ac3..688e822 100755 --- a/Src/Private/Get-AbrOntapVserverFcpSummary.ps1 +++ b/Src/Private/Get-AbrOntapVserverFcpSummary.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverFcpSummary { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverFcpSummary { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver FCP information." + Write-PScriboMessage "Collecting ONTAP Vserver FCP information." } process { @@ -38,13 +38,12 @@ function Get-AbrOntapVserverFcpSummary { 'Status' = Switch ($Item.IsAvailable) { 'True' { 'Up' } 'False' { 'Down' } - default {$Item.IsAvailable} + default { $Item.IsAvailable } } } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.FCP) { @@ -61,9 +60,8 @@ function Get-AbrOntapVserverFcpSummary { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverIscsiInitiator.ps1 b/Src/Private/Get-AbrOntapVserverIscsiInitiator.ps1 index 81ba255..793bab6 100755 --- a/Src/Private/Get-AbrOntapVserverIscsiInitiator.ps1 +++ b/Src/Private/Get-AbrOntapVserverIscsiInitiator.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverIscsiInitiator { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverIscsiInitiator { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver ISCSI Client Initiators information." + Write-PScriboMessage "Collecting ONTAP Vserver ISCSI Client Initiators information." } process { @@ -38,9 +38,8 @@ function Get-AbrOntapVserverIscsiInitiator { 'Target Port Group' = $Item.TpGroupName } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -54,9 +53,8 @@ function Get-AbrOntapVserverIscsiInitiator { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverIscsiInterface.ps1 b/Src/Private/Get-AbrOntapVserverIscsiInterface.ps1 index f23cf60..78a10f8 100755 --- a/Src/Private/Get-AbrOntapVserverIscsiInterface.ps1 +++ b/Src/Private/Get-AbrOntapVserverIscsiInterface.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverIscsiInterface { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverIscsiInterface { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver ISCSI interface information." + Write-PScriboMessage "Collecting ONTAP Vserver ISCSI interface information." } process { @@ -44,9 +44,8 @@ function Get-AbrOntapVserverIscsiInterface { } } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Iscsi) { @@ -63,9 +62,8 @@ function Get-AbrOntapVserverIscsiInterface { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverIscsiSummary.ps1 b/Src/Private/Get-AbrOntapVserverIscsiSummary.ps1 index b778880..187c657 100755 --- a/Src/Private/Get-AbrOntapVserverIscsiSummary.ps1 +++ b/Src/Private/Get-AbrOntapVserverIscsiSummary.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverIscsiSummary { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverIscsiSummary { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver ISCSI information." + Write-PScriboMessage "Collecting ONTAP Vserver ISCSI information." } process { @@ -43,13 +43,12 @@ function Get-AbrOntapVserverIscsiSummary { 'Status' = Switch ($Item.IsAvailable) { 'True' { 'Up' } 'False' { 'Down' } - default {$Item.IsAvailable} + default { $Item.IsAvailable } } } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Iscsi) { @@ -66,9 +65,8 @@ function Get-AbrOntapVserverIscsiSummary { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverLunIgroup.ps1 b/Src/Private/Get-AbrOntapVserverLunIgroup.ps1 index 107363c..41abd34 100755 --- a/Src/Private/Get-AbrOntapVserverLunIgroup.ps1 +++ b/Src/Private/Get-AbrOntapVserverLunIgroup.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverLunIgroup { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,31 +18,30 @@ function Get-AbrOntapVserverLunIgroup { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver Igroup information." + Write-PScriboMessage "Collecting ONTAP Vserver Igroup information." } process { - try{ + try { $VserverIgroup = Get-NcIgroup -VserverContext $Vserver -Controller $Array $VserverObj = @() if ($VserverIgroup) { foreach ($Item in $VserverIgroup) { try { - $lunmap = get-nclunmap -Controller $Array | Where-Object { $_.InitiatorGroup -eq $Item.Name} | Select-Object -ExpandProperty Path - $reportingnodes = get-nclunmap -Controller $Array | Where-Object { $_.InitiatorGroup -eq $Item.Name} | Select-Object -Unique -ExpandProperty ReportingNodes + $lunmap = Get-NcLunMap -Controller $Array | Where-Object { $_.InitiatorGroup -eq $Item.Name } | Select-Object -ExpandProperty Path + $reportingnodes = Get-NcLunMap -Controller $Array | Where-Object { $_.InitiatorGroup -eq $Item.Name } | Select-Object -Unique -ExpandProperty ReportingNodes $MappedLun = @() foreach ($lun in $lunmap) { try { $lunname = $lun.split('/') $MappedLun += $lunname[3] - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $inObj = [ordered] @{ @@ -51,12 +50,12 @@ function Get-AbrOntapVserverLunIgroup { 'Protocol' = $Item.Protocol 'Initiators' = $Item.Initiators.InitiatorName 'Mapped Lun' = Switch (($MappedLun).count) { - 0 {"None"} - default {$MappedLun} + 0 { "None" } + default { $MappedLun } } 'Reporting Nodes' = Switch (($reportingnodes).count) { - 0 {"None"} - default {$reportingnodes} + 0 { "None" } + default { $reportingnodes } } } $VserverObj = [pscustomobject]$inobj @@ -73,15 +72,13 @@ function Get-AbrOntapVserverLunIgroup { $TableParams['Caption'] = "- $($TableParams.Name)" } $VserverObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverLunStorage.ps1 b/Src/Private/Get-AbrOntapVserverLunStorage.ps1 index 74f53a9..26094c8 100755 --- a/Src/Private/Get-AbrOntapVserverLunStorage.ps1 +++ b/Src/Private/Get-AbrOntapVserverLunStorage.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverLunStorage { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapVserverLunStorage { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver lun information." + Write-PScriboMessage "Collecting ONTAP Vserver lun information." } process { try { - $VserverLun = get-nclun -VserverContext $Vserver -Controller $Array + $VserverLun = Get-NcLun -VserverContext $Vserver -Controller $Array $VserverObj = @() if ($VserverLun) { foreach ($Item in $VserverLun) { @@ -44,8 +44,8 @@ function Get-AbrOntapVserverLunStorage { 'Path' = $Item.Path 'Serial Number' = $Item.SerialNumber 'Initiator Group' = Switch (($lunmap).count) { - 0 {"None"} - default {$lunmap} + 0 { "None" } + default { $lunmap } } 'Home Node ' = $Item.Node 'Capacity' = $Item.Size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue @@ -56,18 +56,18 @@ function Get-AbrOntapVserverLunStorage { 'Space Allocation' = Switch ($Item.IsSpaceAllocEnabled) { 'True' { 'Enabled' } 'False' { 'Disabled' } - default {$Item.IsSpaceAllocEnabled} + default { $Item.IsSpaceAllocEnabled } } 'Space Reservation' = Switch ($Item.IsSpaceReservationEnabled) { 'True' { 'Enabled' } 'False' { 'Disabled' } - default {$Item.IsSpaceReservationEnabled} + default { $Item.IsSpaceReservationEnabled } } 'Is Mapped' = ConvertTo-TextYN $Item.Mapped 'Status' = Switch ($Item.Online) { 'True' { 'Up' } 'False' { 'Down' } - default {$Item.Online} + default { $Item.Online } } } $VserverObj = [pscustomobject]$inobj @@ -87,15 +87,13 @@ function Get-AbrOntapVserverLunStorage { $TableParams['Caption'] = "- $($TableParams.Name)" } $VserverObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverNFSExport.ps1 b/Src/Private/Get-AbrOntapVserverNFSExport.ps1 index 6053e2f..901e872 100755 --- a/Src/Private/Get-AbrOntapVserverNFSExport.ps1 +++ b/Src/Private/Get-AbrOntapVserverNFSExport.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverNFSExport { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverNFSExport { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver NFS Export information." + Write-PScriboMessage "Collecting ONTAP Vserver NFS Export information." } process { @@ -40,15 +40,13 @@ function Get-AbrOntapVserverNFSExport { 'Vserver' = $SVM.Vserver 'Path Name' = $Item.Pathname } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -64,9 +62,8 @@ function Get-AbrOntapVserverNFSExport { $VserverObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } end {} diff --git a/Src/Private/Get-AbrOntapVserverNFSOptions.ps1 b/Src/Private/Get-AbrOntapVserverNFSOptions.ps1 index 640c21f..154a408 100755 --- a/Src/Private/Get-AbrOntapVserverNFSOptions.ps1 +++ b/Src/Private/Get-AbrOntapVserverNFSOptions.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverNFSOption { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverNFSOption { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver NFS Option information." + Write-PScriboMessage "Collecting ONTAP Vserver NFS Option information." } process { @@ -49,9 +49,8 @@ function Get-AbrOntapVserverNFSOption { 'Nfsv40 Enabled' = ConvertTo-TextYN $Item.IsNfsv40Enabled } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -65,9 +64,8 @@ function Get-AbrOntapVserverNFSOption { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverNFSSummary.ps1 b/Src/Private/Get-AbrOntapVserverNFSSummary.ps1 index 696f9b8..9187054 100755 --- a/Src/Private/Get-AbrOntapVserverNFSSummary.ps1 +++ b/Src/Private/Get-AbrOntapVserverNFSSummary.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverNFSSummary { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverNFSSummary { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver NFS information." + Write-PScriboMessage "Collecting ONTAP Vserver NFS information." } process { @@ -37,25 +37,24 @@ function Get-AbrOntapVserverNFSSummary { 'Nfs v3' = Switch ($Item.IsNfsv3) { 'True' { 'Enabled' } 'False' { 'Disabled' } - default {$Item.IsNfsv3} + default { $Item.IsNfsv3 } } 'Nfs v4' = Switch ($Item.IsNfsv4) { 'True' { 'Enabled' } 'False' { 'Disabled' } - default {$Item.IsNfsv4} + default { $Item.IsNfsv4 } } 'Nfs v41' = Switch ($Item.IsNfsv41) { 'True' { 'Enabled' } 'False' { 'Disabled' } - default {$Item.IsNfsv41} + default { $Item.IsNfsv41 } } 'General Access' = ConvertTo-TextYN $Item.GeneralAccess } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.NFS) { @@ -74,9 +73,8 @@ function Get-AbrOntapVserverNFSSummary { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverNonMappedLun.ps1 b/Src/Private/Get-AbrOntapVserverNonMappedLun.ps1 index 04cdeba..fa7c4fb 100755 --- a/Src/Private/Get-AbrOntapVserverNonMappedLun.ps1 +++ b/Src/Private/Get-AbrOntapVserverNonMappedLun.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverNonMappedLun { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapVserverNonMappedLun { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP ISCSI/FCP Non Mapped Lun information." + Write-PScriboMessage "Collecting ONTAP ISCSI/FCP Non Mapped Lun information." } process { try { - $LunFilter = Get-NcLun -VserverContext $Vserver -Controller $Array | Where-Object {$_.Mapped -ne "True"} + $LunFilter = Get-NcLun -VserverContext $Vserver -Controller $Array | Where-Object { $_.Mapped -ne "True" } $OutObj = @() if ($LunFilter) { foreach ($Item in $LunFilter) { @@ -42,9 +42,8 @@ function Get-AbrOntapVserverNonMappedLun { 'Lun Format' = $Item.Protocol } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Status) { @@ -61,9 +60,8 @@ function Get-AbrOntapVserverNonMappedLun { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverS3Bucket.ps1 b/Src/Private/Get-AbrOntapVserverS3Bucket.ps1 index 5979ea4..799cc1d 100755 --- a/Src/Private/Get-AbrOntapVserverS3Bucket.ps1 +++ b/Src/Private/Get-AbrOntapVserverS3Bucket.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverS3Bucket { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverS3Bucket { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver S3 bucket information." + Write-PScriboMessage "Collecting ONTAP Vserver S3 bucket information." } process { @@ -40,9 +40,8 @@ function Get-AbrOntapVserverS3Bucket { 'Used' = $Item.logical_used_size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -56,9 +55,8 @@ function Get-AbrOntapVserverS3Bucket { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverS3Summary.ps1 b/Src/Private/Get-AbrOntapVserverS3Summary.ps1 index 534fb43..25b1c07 100755 --- a/Src/Private/Get-AbrOntapVserverS3Summary.ps1 +++ b/Src/Private/Get-AbrOntapVserverS3Summary.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverS3Summary { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverS3Summary { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver S3 information." + Write-PScriboMessage "Collecting ONTAP Vserver S3 information." } process { @@ -45,9 +45,8 @@ function Get-AbrOntapVserverS3Summary { } } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -61,9 +60,8 @@ function Get-AbrOntapVserverS3Summary { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverSummary.ps1 b/Src/Private/Get-AbrOntapVserverSummary.ps1 index bd9c71a..e2d7cb3 100755 --- a/Src/Private/Get-AbrOntapVserverSummary.ps1 +++ b/Src/Private/Get-AbrOntapVserverSummary.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverSummary { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapVserverSummary { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver information." + Write-PScriboMessage "Collecting ONTAP Vserver information." } process { try { - $VserverData = Get-NcVserver -VserverContext $Vserver| Where-Object { $_.VserverType -eq "data" } + $VserverData = Get-NcVserver -VserverContext $Vserver | Where-Object { $_.VserverType -eq "data" } $VserverObj = @() if ($VserverData) { foreach ($Item in $VserverData) { @@ -41,9 +41,8 @@ function Get-AbrOntapVserverSummary { 'Status' = $Item.State } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Status) { @@ -62,7 +61,7 @@ function Get-AbrOntapVserverSummary { } try { Section -Style Heading4 'Root Volume' { - $VserverRootVol = Get-NcVol -VserverContext $Vserver| Where-Object {$_.JunctionPath -eq '/'} + $VserverRootVol = Get-NcVol -VserverContext $Vserver | Where-Object { $_.JunctionPath -eq '/' } $VserverObj = @() if ($VserverRootVol) { foreach ($Item in $VserverRootVol) { @@ -77,9 +76,8 @@ function Get-AbrOntapVserverSummary { 'Aggregate' = $Item.Aggregate } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Status) { @@ -98,9 +96,8 @@ function Get-AbrOntapVserverSummary { $VserverObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { if (Get-NcVserverAggr) { @@ -117,9 +114,8 @@ function Get-AbrOntapVserverSummary { 'Available' = $Item.AvailableSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -135,13 +131,11 @@ function Get-AbrOntapVserverSummary { } } } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumeSnapshot.ps1 b/Src/Private/Get-AbrOntapVserverVolumeSnapshot.ps1 index bb4ea45..aef488a 100755 --- a/Src/Private/Get-AbrOntapVserverVolumeSnapshot.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumeSnapshot.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumeSnapshot { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapVserverVolumeSnapshot { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes snapshot information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes snapshot information." } process { try { - $VolumeFilter = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0'} + $VolumeFilter = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } $VserverObj = @() if ($VolumeFilter) { foreach ($Item in $VolumeFilter) { @@ -45,13 +45,12 @@ function Get-AbrOntapVserverVolumeSnapshot { } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Snapshot) { - $VserverObj | Where-Object { $_.'Snapshot Enabled' -eq 'True' -and $_.'Reserve Available' -eq 0 } | Set-Style -Style Warning -Property 'Reserve Size','Reserve Available','Used' + $VserverObj | Where-Object { $_.'Snapshot Enabled' -eq 'True' -and $_.'Reserve Available' -eq 0 } | Set-Style -Style Warning -Property 'Reserve Size', 'Reserve Available', 'Used' } $TableParams = @{ @@ -66,9 +65,8 @@ function Get-AbrOntapVserverVolumeSnapshot { $VserverObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumeSnapshotHealth.ps1 b/Src/Private/Get-AbrOntapVserverVolumeSnapshotHealth.ps1 index f30c1fd..ffe01be 100755 --- a/Src/Private/Get-AbrOntapVserverVolumeSnapshotHealth.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumeSnapshotHealth.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumeSnapshotHealth { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,20 +18,20 @@ function Get-AbrOntapVserverVolumeSnapshotHealth { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes snapshot healthcheck information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes snapshot healthcheck information." } process { try { $SnapshotDays = 7 $Now = Get-Date - $VserverFilter = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0'} - $SnapShotData = get-ncsnapshot -Volume $VserverFilter -Controller $Array | Where-Object {$_.Name -notmatch "snapmirror.*" -and $_.Created -le $Now.AddDays(-$SnapshotDays)} + $VserverFilter = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } + $SnapShotData = Get-NcSnapshot -Volume $VserverFilter -Controller $Array | Where-Object { $_.Name -notmatch "snapmirror.*" -and $_.Created -le $Now.AddDays(-$SnapshotDays) } if ($SnapShotData) { Section -Style Heading4 "HealthCheck - Volumes Snapshot" { Paragraph "The following section provides the Vserver Volumes Snapshot HealthCheck on $($SVM)." @@ -46,9 +46,8 @@ function Get-AbrOntapVserverVolumeSnapshotHealth { 'Used' = $Item.Total | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -64,8 +63,7 @@ function Get-AbrOntapVserverVolumeSnapshotHealth { $VserverObj | Table @TableParams } } - } - catch { + } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumes.ps1 b/Src/Private/Get-AbrOntapVserverVolumes.ps1 index 7611a7f..94357d0 100755 --- a/Src/Private/Get-AbrOntapVserverVolumes.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumes.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolume { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapVserverVolume { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes information." } process { try { - $VserverRootVol = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0'} + $VserverRootVol = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' } $VserverObj = @() if ($VserverRootVol) { foreach ($Item in $VserverRootVol) { @@ -42,9 +42,8 @@ function Get-AbrOntapVserverVolume { 'Aggregate' = $Item.Aggregate } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Status) { @@ -62,9 +61,8 @@ function Get-AbrOntapVserverVolume { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesExportPolicy.ps1 b/Src/Private/Get-AbrOntapVserverVolumesExportPolicy.ps1 index 71a9047..d0a2554 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesExportPolicy.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesExportPolicy.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesExportPolicy { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverVolumesExportPolicy { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes export policy information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes export policy information." } process { @@ -42,9 +42,8 @@ function Get-AbrOntapVserverVolumesExportPolicy { 'Rw Rule' = $Item.RwRule } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -58,9 +57,8 @@ function Get-AbrOntapVserverVolumesExportPolicy { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesFlexcache.ps1 b/Src/Private/Get-AbrOntapVserverVolumesFlexcache.ps1 index 63411e3..3ff0c21 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesFlexcache.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesFlexcache.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesFlexcache { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverVolumesFlexcache { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver flexcache volumes information." + Write-PScriboMessage "Collecting ONTAP Vserver flexcache volumes information." } process { @@ -44,9 +44,8 @@ function Get-AbrOntapVserverVolumesFlexcache { 'Capacity' = $VolumeUsage.TotalSize | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -76,9 +75,8 @@ function Get-AbrOntapVserverVolumesFlexcache { 'Capacity' = $Item.Size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -92,13 +90,11 @@ function Get-AbrOntapVserverVolumesFlexcache { } $OutObj | Table @TableParams } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesFlexclone.ps1 b/Src/Private/Get-AbrOntapVserverVolumesFlexclone.ps1 index b61843b..21131c1 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesFlexclone.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesFlexclone.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesFlexclone { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverVolumesFlexclone { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes flexclone information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes flexclone information." } process { @@ -59,15 +59,13 @@ function Get-AbrOntapVserverVolumesFlexclone { $TableParams['Caption'] = "- $($TableParams.Name)" } $VserverObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesFlexgroup.ps1 b/Src/Private/Get-AbrOntapVserverVolumesFlexgroup.ps1 index e6435a2..37724da 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesFlexgroup.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesFlexgroup.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesFlexgroup { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux diff --git a/Src/Private/Get-AbrOntapVserverVolumesQos.ps1 b/Src/Private/Get-AbrOntapVserverVolumesQos.ps1 index 5ef26d9..fb4d293 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesQos.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesQos.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesQosSetting { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapVserverVolumesQosSetting { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes qos information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes qos information." } process { try { - $VolumeFilter = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.VolumeStateAttributes.IsConstituent -ne "True"} + $VolumeFilter = Get-NcVol -VserverContext $Vserver -Controller $Array | Where-Object { $_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.VolumeStateAttributes.IsConstituent -ne "True" } $OutObj = @() if ($VolumeFilter) { foreach ($Item in $VolumeFilter) { @@ -46,9 +46,8 @@ function Get-AbrOntapVserverVolumesQosSetting { } } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -62,9 +61,8 @@ function Get-AbrOntapVserverVolumesQosSetting { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 b/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 index 7803559..e0143db 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesQosGPAdaptive.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesQosGPAdaptive { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,7 +19,7 @@ function Get-AbrOntapVserverVolumesQosGPAdaptive { ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes qos group adaptive information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes qos group adaptive information." } process { @@ -37,9 +37,8 @@ function Get-AbrOntapVserverVolumesQosGPAdaptive { 'Vserver' = $Item.Vserver } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -53,9 +52,8 @@ function Get-AbrOntapVserverVolumesQosGPAdaptive { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 b/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 index 85dfd6f..9e631cb 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesQosGPFixed.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesQosGPFixed { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -19,12 +19,12 @@ function Get-AbrOntapVserverVolumesQosGPFixed { ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes qos group fixed information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes qos group fixed information." } process { try { - $QoSFilter = Get-NcQosPolicyGroup -Controller $Array | Where-Object {$_.PolicyGroupClass -eq "user_defined"} + $QoSFilter = Get-NcQosPolicyGroup -Controller $Array | Where-Object { $_.PolicyGroupClass -eq "user_defined" } $OutObj = @() if ($QoSFilter) { foreach ($Item in $QoSFilter) { @@ -37,9 +37,8 @@ function Get-AbrOntapVserverVolumesQosGPFixed { 'Vserver' = $Item.Vserver } $OutObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -53,9 +52,8 @@ function Get-AbrOntapVserverVolumesQosGPFixed { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesQtree.ps1 b/Src/Private/Get-AbrOntapVserverVolumesQtree.ps1 index 1e30d5c..9e353e6 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesQtree.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesQtree.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesQtree { .DESCRIPTION .NOTES - Version: 0.6.3 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,17 +18,17 @@ function Get-AbrOntapVserverVolumesQtree { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes qtree information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes qtree information." } process { try { - $VserverQtree = Get-NcQtree -VserverContext $Vserver -Controller $Array | Where-Object {$NULL -ne $_.Qtree} + $VserverQtree = Get-NcQtree -VserverContext $Vserver -Controller $Array | Where-Object { $NULL -ne $_.Qtree } $VserverObj = @() if ($VserverQtree) { foreach ($Item in $VserverQtree) { @@ -41,9 +41,8 @@ function Get-AbrOntapVserverVolumesQtree { 'Export Policy' = $Item.ExportPolicy } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Status) { @@ -60,9 +59,8 @@ function Get-AbrOntapVserverVolumesQtree { } $VserverObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-AbrOntapVserverVolumesQuota.ps1 b/Src/Private/Get-AbrOntapVserverVolumesQuota.ps1 index 6d91e3b..6c606fd 100755 --- a/Src/Private/Get-AbrOntapVserverVolumesQuota.ps1 +++ b/Src/Private/Get-AbrOntapVserverVolumesQuota.ps1 @@ -5,7 +5,7 @@ function Get-AbrOntapVserverVolumesQuota { .DESCRIPTION .NOTES - Version: 0.6.6 + Version: 0.6.7 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux @@ -18,12 +18,12 @@ function Get-AbrOntapVserverVolumesQuota { [Parameter ( Position = 0, Mandatory)] - [string] - $Vserver + [string] + $Vserver ) begin { - Write-PscriboMessage "Collecting ONTAP Vserver volumes quota information." + Write-PScriboMessage "Collecting ONTAP Vserver volumes quota information." } process { @@ -45,9 +45,8 @@ function Get-AbrOntapVserverVolumesQuota { if ($null -ne $Item.QuotaErrorMsgs) { $VserverObj.Add('Quota Error', $Item.QuotaErrorMsgs) } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($Healthcheck.Vserver.Quota) { @@ -65,9 +64,8 @@ function Get-AbrOntapVserverVolumesQuota { $VserverObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { if ($InfoLevel.Vserver -ge 2) { @@ -105,9 +103,8 @@ function Get-AbrOntapVserverVolumesQuota { if ($null -ne $Item.QuotaError) { $VserverObj.Add('Quota Error', $Item.QuotaError) } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -126,9 +123,8 @@ function Get-AbrOntapVserverVolumesQuota { $VserverObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { Section -ExcludeFromTOC -Style Heading6 "$Vserver Vserver Volume Quota Report (Disk)" { @@ -154,9 +150,8 @@ function Get-AbrOntapVserverVolumesQuota { 'Disk Used' = $Item.DiskUsed | ConvertTo-FormattedNumber -Type DataSize -ErrorAction SilentlyContinue } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } if ($null -ne $Item.QuotaError) { @@ -177,9 +172,8 @@ function Get-AbrOntapVserverVolumesQuota { $VserverObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { Section -ExcludeFromTOC -Style Heading6 "$Vserver Vserver Volume Quota Report (File)" { @@ -205,9 +199,8 @@ function Get-AbrOntapVserverVolumesQuota { 'Files Used' = $Item.FilesUsed | ConvertTo-FormattedNumber -Type Count -ErrorAction SilentlyContinue } $VserverObj += [pscustomobject]$inobj - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -222,14 +215,12 @@ function Get-AbrOntapVserverVolumesQuota { $VserverObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } diff --git a/Src/Private/Get-NetAppOntapAPI.ps1 b/Src/Private/Get-NetAppOntapAPI.ps1 index dac17bf..c244626 100644 --- a/Src/Private/Get-NetAppOntapAPI.ps1 +++ b/Src/Private/Get-NetAppOntapAPI.ps1 @@ -5,7 +5,7 @@ function Get-NetAppOntapAPI { .DESCRIPTION .NOTES - Version: 0.5.0 + Version: 0.6.7 Author: Tim Carman Editor: Jonathan Colon Twitter: @jcolonfzenpr @@ -26,9 +26,9 @@ function Get-NetAppOntapAPI { ) begin { - #region Workaround for SelfSigned Cert an force TLS 1.2 - if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type) { - $certCallback = @" + #region Workaround for SelfSigned Cert an force TLS 1.2 + if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type) { + $certCallback = @" using System; using System.Net; using System.Net.Security; @@ -54,11 +54,11 @@ function Get-NetAppOntapAPI { } } "@ - Add-Type $certCallback - } - [ServerCertificateValidationCallback]::Ignore() - [Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" - #endregion Workaround for SelfSigned Cert an force TLS 1.2 + Add-Type $certCallback + } + [ServerCertificateValidationCallback]::Ignore() + [Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" + #endregion Workaround for SelfSigned Cert an force TLS 1.2 $username = $Credential.UserName $password = $Credential.GetNetworkCredential().Password @@ -67,9 +67,9 @@ function Get-NetAppOntapAPI { #$fields = 'fields=*&return_records=true&return_timeout=15' $api = "https://" + $($ClusterIP) $headers = @{ - 'Accept' = 'application/json' + 'Accept' = 'application/json' 'Authorization' = "Basic $auth" - 'Content-Type' = 'application/json' + 'Content-Type' = 'application/json' } } diff --git a/Src/Private/SharedUtilsFunctions.ps1 b/Src/Private/SharedUtilsFunctions.ps1 index 65a09c6..edfd4d9 100644 --- a/Src/Private/SharedUtilsFunctions.ps1 +++ b/Src/Private/SharedUtilsFunctions.ps1 @@ -16,31 +16,29 @@ function ConvertTo-TextYN { [CmdletBinding()] [OutputType([String])] Param - ( + ( [Parameter ( Position = 0, Mandatory)] - [AllowEmptyString()] - [string] - $TEXT - ) + [AllowEmptyString()] + [string] + $TEXT + ) - switch ([string]::IsNullOrEmpty($TEXT)) - { - $true {'-'} + switch ([string]::IsNullOrEmpty($TEXT)) { + $true { '-' } $false { - switch ($TEXT) - { - "True" {"Yes"; break} - "False" {"No"; break} - default {$TEXT} + switch ($TEXT) { + "True" { "Yes"; break } + "False" { "No"; break } + default { $TEXT } } } - default {'-'} + default { '-' } } } # end function Get-UnixDate ($UnixDate) { - <# + <# .SYNOPSIS Used by As Built Report to convert Date to a more nice format. .DESCRIPTION @@ -74,18 +72,18 @@ function ConvertTo-EmptyToFiller { [CmdletBinding()] [OutputType([String])] Param - ( + ( [Parameter ( Position = 0, Mandatory)] - [AllowEmptyString()] - [string] - $TEXT - ) + [AllowEmptyString()] + [string] + $TEXT + ) switch ([string]::IsNullOrEmpty($TEXT)) { - $true {"-"; break} - $false {$TEXT; break} - default {'-'} - } - } # end \ No newline at end of file + $true { "-"; break } + $false { $TEXT; break } + default { '-' } + } +} # end \ No newline at end of file diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 523dc61..56af105 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -5,7 +5,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { .DESCRIPTION Documents the configuration of NetApp ONTAP in Word/HTML/Text formats using PScribo. .NOTES - Version: 0.6.6 + Version: 0.6.7 Author: Jonathan Colon Feliciano Twitter: @jcolonfzenpr Github: rebelinux @@ -39,8 +39,8 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } } } Catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } + Write-PScriboMessage -IsWarning $_.Exception.Message + } # Import Report Configuration $script:Report = $ReportConfig.Report @@ -113,7 +113,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapNodesHW } } - if (Get-NcServiceProcessor -Controller $Array | Where-Object {$NULL -ne $_.IpAddress -and $NULL -ne $_.MacAddress}) { + if (Get-NcServiceProcessor -Controller $Array | Where-Object { $NULL -ne $_.IpAddress -and $NULL -ne $_.MacAddress }) { Section -Style Heading4 'Node Service-Processor Inventory' { Get-AbrOntapNodesSP } @@ -166,7 +166,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Section -Style Heading4 'Disk Container Type' { Get-AbrOntapDiskType } - if (Get-NcDisk -Controller $Array | Where-Object{ $_.DiskRaidInfo.ContainerType -eq "broken" }) { + if (Get-NcDisk -Controller $Array | Where-Object { $_.DiskRaidInfo.ContainerType -eq "broken" }) { Section -Style Heading4 'Failed Disk' { Get-AbrOntapDiskBroken } @@ -261,7 +261,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapNetworkSubnet } } - $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -ne "node" -and $_.VserverType -ne "system" -and $_.Vserver -notin $Options.Exclude.Vserver} | Select-Object -ExpandProperty Vserver + $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" { @@ -290,11 +290,11 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #---------------------------------------------------------------------------------------------# Write-PScriboMessage "Vserver InfoLevel set at $($InfoLevel.Vserver)." if ($InfoLevel.Vserver -gt 0) { - if (Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data"}) { + if (Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" }) { Section -Style Heading2 'Vserver Information' { Paragraph "The following section provides a summary of the vserver information on $($ClusterInfo.ClusterName)." BlankLine - $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" -and $_.Vserver -notin $Options.Exclude.Vserver} | Select-Object -ExpandProperty Vserver + $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)." @@ -313,7 +313,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } } } - if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0'}) { + 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 ($InfoLevel.Vserver -ge 2) { @@ -323,7 +323,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } } } - if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0' -and $_.VolumeStateAttributes.IsFlexgroup -eq "True"}) { + 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 } @@ -339,7 +339,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } } } - if (Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object {$_.JunctionPath -ne '/' -and $_.Name -ne 'vol0'} | Get-NcSnapshot -Controller $Array) { + 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) { @@ -352,7 +352,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapVserverVolumesExportPolicy -Vserver $SVM } } - if (Get-NcQtree -VserverContext $SVM -Controller $Array | Where-Object {$NULL -ne $_.Qtree}) { + if (Get-NcQtree -VserverContext $SVM -Controller $Array | Where-Object { $NULL -ne $_.Qtree }) { Section -Style Heading4 "Qtrees" { Get-AbrOntapVserverVolumesQtree -Vserver $SVM } @@ -430,7 +430,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #---------------------------------------------------------------------------------------------# # ISCSI Section # #---------------------------------------------------------------------------------------------# - if ( Get-NcIscsiService -Controller $Array| Where-Object {$_.Vserver -eq $SVM} ) { + if ( Get-NcIscsiService -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { Section -Style Heading5 "ISCSI Services" { Paragraph "The following section provides the ISCSI Service Information on $($SVM)." BlankLine @@ -450,7 +450,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #---------------------------------------------------------------------------------------------# # FCP Section # #---------------------------------------------------------------------------------------------# - if ( Get-NcFcpService -Controller $Array | Where-Object {$_.Vserver -eq $SVM} ) { + 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 on $($SVM)." BlankLine @@ -466,7 +466,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #---------------------------------------------------------------------------------------------# # Lun Storage Section # #---------------------------------------------------------------------------------------------# - if (Get-NcLun -Controller $Array | Where-Object {$_.Vserver -eq $SVM}) { + if (Get-NcLun -Controller $Array | Where-Object { $_.Vserver -eq $SVM }) { Section -Style Heading5 'Lun Storage' { Paragraph "The following section provides the Lun Storage Information on $($SVM)." BlankLine @@ -570,7 +570,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #---------------------------------------------------------------------------------------------y Write-PScriboMessage "Efficiency InfoLevel set at $($InfoLevel.Efficiency)." if ($InfoLevel.Efficiency -gt 0) { - $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" -and $_.Vserver -notin $Options.Exclude.Vserver} | Select-Object -ExpandProperty Vserver + $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" -and $_.Vserver -notin $Options.Exclude.Vserver } | Select-Object -ExpandProperty Vserver if (Get-NcAggrEfficiency -Controller $Array) { Section -Style Heading2 'Efficiency Information' { Paragraph "The following section provides the Storage Efficiency Saving information on $($ClusterInfo.ClusterName)." @@ -581,8 +581,8 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { BlankLine Get-AbrOntapEfficiencyAggr foreach ($SVM in $Vservers) { - $VolFilter = Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object {$_.State -eq "online"} - if (Get-NcEfficiency -Volume $VolFilter.Name -Controller $Array | Where-Object {$_.Name -ne "vol0"}) { + $VolFilter = Get-NcVol -VserverContext $SVM -Controller $Array | Where-Object { $_.State -eq "online" } + if (Get-NcEfficiency -Volume $VolFilter.Name -Controller $Array | Where-Object { $_.Name -ne "vol0" }) { Section -Style Heading4 "$SVM Vserver Volume Deduplication" { Get-AbrOntapEfficiencyVolSisStatus -Vserver $SVM Section -Style Heading5 "Volume Efficiency" { @@ -606,7 +606,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #---------------------------------------------------------------------------------------------# Write-PScriboMessage "Security InfoLevel set at $($InfoLevel.Security)." if ($InfoLevel.Security -gt 0) { - $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" -and $_.Vserver -notin $Options.Exclude.Vserver} | Select-Object -ExpandProperty Vserver + $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" -and $_.Vserver -notin $Options.Exclude.Vserver } | Select-Object -ExpandProperty Vserver Section -Style Heading2 'Security Information' { Paragraph "The following section provides the Security related information on $($ClusterInfo.ClusterName)." BlankLine @@ -674,7 +674,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Section -Style Heading5 'Volume Snaplock Type' { Get-AbrOntapSecuritySnapLockVol if ($InfoLevel.Security -ge 2) { - if (Get-Ncvol -Controller $Array | Where-Object {$_.VolumeSnaplockAttributes.SnaplockType -in "enterprise","compliance"}) { + if (Get-NcVol -Controller $Array | Where-Object { $_.VolumeSnaplockAttributes.SnaplockType -in "enterprise", "compliance" }) { Section -ExcludeFromTOC -Style Heading6 'Snaplock Volume Attributes' { Get-AbrOntapSecuritySnapLockVollAttr } @@ -705,12 +705,12 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapSysConfigWebStatus } } - if (Get-NcNetDns -Controller $Array | Where-Object {$_.Vserver -notin $Options.Exclude.Vserver}) { + if (Get-NcNetDns -Controller $Array | Where-Object { $_.Vserver -notin $Options.Exclude.Vserver }) { Section -Style Heading3 'DNS Configuration' { Get-AbrOntapSysConfigDNS } } - if (Get-NcSnmp -Controller $Array | Where-Object { $Null -ne $_.Communities -and ($_.IsTrapEnabled -or $_.IsSnmpEnabled)}) { + if (Get-NcSnmp -Controller $Array | Where-Object { $Null -ne $_.Communities -and ($_.IsTrapEnabled -or $_.IsSnmpEnabled) }) { Section -Style Heading3 'SNMP Configuration' { Get-AbrOntapSysConfigSNMP } @@ -738,7 +738,7 @@ 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)) { + 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 } From c50a3a923d7133283158a809eb46d6e7fb8051c3 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sun, 11 Feb 2024 19:14:22 -0400 Subject: [PATCH 09/27] Update codeql.yml --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6267bc4..25480fd 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -44,6 +44,6 @@ jobs: # Upload the SARIF file generated in the previous step - name: Upload SARIF results file - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: results.sarif From 7d1c25b60efb0607ec0a9d4068f8da370e714031 Mon Sep 17 00:00:00 2001 From: MicKBfr Date: Wed, 31 Jul 2024 11:31:17 +0200 Subject: [PATCH 10/27] Update Invoke-AsBuiltReport.NetApp.ONTAP.ps1 add Admin Vserver security information in report --- Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 56af105..67a456e 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -606,7 +606,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #---------------------------------------------------------------------------------------------# Write-PScriboMessage "Security InfoLevel set at $($InfoLevel.Security)." if ($InfoLevel.Security -gt 0) { - $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" -and $_.Vserver -notin $Options.Exclude.Vserver } | Select-Object -ExpandProperty Vserver + $Vservers = Get-NcVserver -Controller $Array | Where-Object { $_.VserverType -eq "data" -or $_.VserverType -eq "admin" -and $_.Vserver -notin $Options.Exclude.Vserver } | Select-Object -ExpandProperty Vserver Section -Style Heading2 'Security Information' { Paragraph "The following section provides the Security related information on $($ClusterInfo.ClusterName)." BlankLine From 8a678dc8d18aa9ea189693b86d3de86d6a7b86c7 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Wed, 7 Aug 2024 14:11:08 -0400 Subject: [PATCH 11/27] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4332f0b..0e64cf7 100755 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Below are the instructions on how to install, configure and generate a NetApp ON The ONTAP Storage As Built Report supports the following ONTAP versions; - ONTAP 9.x - - Tested on v9.5, 9.7, 9.8, 9.9.1, 9.10.1, 9.11.1 + - Tested on v9.5, 9.7, 9.8, 9.9.1, 9.10.1, 9.11.1, 9.12.1, 9.13.1, 9.14.1, 9.15.1 ### **PowerShell** @@ -69,9 +69,9 @@ These modules may also be manually installed. | Module Name | Minimum Required Version | PS Gallery | GitHub | |--------------------|:------------------------:|:---------------------------------------------------------------------:|:---------------------------------------------------------------------------:| -| PScribo | 0.9.1 | [Link](https://www.powershellgallery.com/packages/PScribo) | [Link](https://github.com/iainbrighton/PScribo/tree/master) | -| AsBuiltReport.Core | 1.2.0 | [Link](https://www.powershellgallery.com/packages/AsBuiltReport.Core) | [Link](https://github.com/AsBuiltReport/AsBuiltReport.Core/releases/latest) | -| Netapp.ONTAP | 9.10.1.2111 | [Link](https://www.powershellgallery.com/packages/NetApp.ONTAP) | | +| PScribo | 0.10.0 | [Link](https://www.powershellgallery.com/packages/PScribo) | [Link](https://github.com/iainbrighton/PScribo/tree/master) | +| AsBuiltReport.Core | 1.4.0 | [Link](https://www.powershellgallery.com/packages/AsBuiltReport.Core) | [Link](https://github.com/AsBuiltReport/AsBuiltReport.Core/releases/latest) | +| Netapp.ONTAP | 9.15.1.2407 | [Link](https://www.powershellgallery.com/packages/NetApp.ONTAP) | | ## :package: Module Installation From 8dc0183851d90a12b111492d1d2a894c1ad8f540 Mon Sep 17 00:00:00 2001 From: MicKBfr Date: Thu, 8 Aug 2024 14:19:45 +0200 Subject: [PATCH 12/27] Update AsBuiltReport.NetApp.ONTAP.json add metrocluster option to remove all -mc vserver --- AsBuiltReport.NetApp.ONTAP.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/AsBuiltReport.NetApp.ONTAP.json b/AsBuiltReport.NetApp.ONTAP.json index ba585a3..07b23f5 100755 --- a/AsBuiltReport.NetApp.ONTAP.json +++ b/AsBuiltReport.NetApp.ONTAP.json @@ -10,7 +10,8 @@ }, "Options": { "Exclude": { - "Vserver": [] + "Vserver": [], + "MetroCluster" : false } }, "InfoLevel": { @@ -80,4 +81,4 @@ "KMS": true } } -} \ No newline at end of file +} From e8c6cd8eb470b01949cbf1f66c995728b150cb4b Mon Sep 17 00:00:00 2001 From: MicKBfr Date: Thu, 8 Aug 2024 14:27:09 +0200 Subject: [PATCH 13/27] Update Invoke-AsBuiltReport.NetApp.ONTAP.ps1 add all -mc vserver to $Options.Exclude.Vserver option when $Options.exclude.MetroCluster is true --- Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 67a456e..a548c18 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -69,6 +69,13 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } $ClusterInfo = Get-NcCluster -Controller $Array + #If metrocluster option remove all -mc vserver + if ($Options.Exclude.MetroCluster) { + $Options.Exclude.Vserver = $Options.Exclude.Vserver + (get-ncvserver |where {$_ -like '*-mc'}).Vserver + $exclude_vserver = $Options.Exclude.Vserver + Write-PScriboMessage "exclude vserver = $exclude_vserver" + } + #---------------------------------------------------------------------------------------------# # Cluster Section # #---------------------------------------------------------------------------------------------# From d4c89acce554acd9e87cd8e45c1e4f5bf1b12270 Mon Sep 17 00:00:00 2001 From: MicKBfr Date: Thu, 8 Aug 2024 14:30:16 +0200 Subject: [PATCH 14/27] Update README.md Add option metrocluster --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4332f0b..7bc565e 100755 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ The **Options** schema allows certain options within the report to be toggled on | Sub-Schema | Setting | Default | Description | |-----------------|--------------|---------|-----------------------------------------------------------------| | Exclude: Vserver | Array List | Empty | Allow to filter on Vserver Name +| Exclude: MetroCluster | true / false | false | Allow to filter automatically all Vserver with -mc ### InfoLevel From be48a0006d4b12ee60a9834583f113e39b12e858 Mon Sep 17 00:00:00 2001 From: MicKBfr Date: Thu, 8 Aug 2024 15:57:03 +0200 Subject: [PATCH 15/27] Update Invoke-AsBuiltReport.NetApp.ONTAP.ps1 change where with where-object --- Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index a548c18..e25a8d0 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -71,7 +71,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #If metrocluster option remove all -mc vserver if ($Options.Exclude.MetroCluster) { - $Options.Exclude.Vserver = $Options.Exclude.Vserver + (get-ncvserver |where {$_ -like '*-mc'}).Vserver + $Options.Exclude.Vserver = $Options.Exclude.Vserver + (get-ncvserver |where-object {$_ -like '*-mc'}).Vserver $exclude_vserver = $Options.Exclude.Vserver Write-PScriboMessage "exclude vserver = $exclude_vserver" } From 4e0c2f89463d20637ee3958e8899029cf4dd27d3 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 12:55:00 -0400 Subject: [PATCH 16/27] Fix indentation --- AsBuiltReport.NetApp.ONTAP.json | 4 +- README.md | 70 +++++++++---------- .../Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 2 +- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/AsBuiltReport.NetApp.ONTAP.json b/AsBuiltReport.NetApp.ONTAP.json index 07b23f5..a09f9ae 100755 --- a/AsBuiltReport.NetApp.ONTAP.json +++ b/AsBuiltReport.NetApp.ONTAP.json @@ -11,7 +11,7 @@ "Options": { "Exclude": { "Vserver": [], - "MetroCluster" : false + "MetroCluster": false } }, "InfoLevel": { @@ -81,4 +81,4 @@ "KMS": true } } -} +} \ No newline at end of file diff --git a/README.md b/README.md index 7bc565e..6b53b36 100755 --- a/README.md +++ b/README.md @@ -57,9 +57,9 @@ The ONTAP Storage As Built Report supports the following ONTAP versions; This report is compatible with the following PowerShell versions; -| PowerShell 5.1 | PowerShell 7 | -|:----------------------:|:---------------:| -| :white_check_mark: | :white_check_mark:| +| PowerShell 5.1 | PowerShell 7 | +| :----------------: | :----------------: | +| :white_check_mark: | :white_check_mark: | ## :wrench: System Requirements @@ -68,10 +68,10 @@ Each of the following modules will be automatically installed by following the [ These modules may also be manually installed. | Module Name | Minimum Required Version | PS Gallery | GitHub | -|--------------------|:------------------------:|:---------------------------------------------------------------------:|:---------------------------------------------------------------------------:| +| ------------------ | :----------------------: | :-------------------------------------------------------------------: | :-------------------------------------------------------------------------: | | PScribo | 0.9.1 | [Link](https://www.powershellgallery.com/packages/PScribo) | [Link](https://github.com/iainbrighton/PScribo/tree/master) | | AsBuiltReport.Core | 1.2.0 | [Link](https://www.powershellgallery.com/packages/AsBuiltReport.Core) | [Link](https://github.com/AsBuiltReport/AsBuiltReport.Core/releases/latest) | -| Netapp.ONTAP | 9.10.1.2111 | [Link](https://www.powershellgallery.com/packages/NetApp.ONTAP) | | +| Netapp.ONTAP | 9.10.1.2111 | [Link](https://www.powershellgallery.com/packages/NetApp.ONTAP) | | ## :package: Module Installation @@ -124,23 +124,23 @@ The following provides information of how to configure each schema within the re The **Report** schema provides configuration of the NetApp ONTAP report information. -| Sub-Schema | Setting | Default | Description | -|---------------------|--------------|--------------------------------|--------------------------------------------------------------| -| Name | User defined | NetApp ONTAP As Built Report | The name of the As Built Report | -| Version | User defined | 1.0 | The report version | -| Status | User defined | Released | The report release status | -| ShowCoverPageImage | true / false | true | Toggle to enable/disable the display of the cover page image | -| ShowTableOfContents | true / false | true | Toggle to enable/disable table of contents | -| ShowHeaderFooter | true / false | true | Toggle to enable/disable document headers & footers | -| ShowTableCaptions | true / false | true | Toggle to enable/disable table captions/numbering | +| Sub-Schema | Setting | Default | Description | +| ------------------- | ------------ | ---------------------------- | ------------------------------------------------------------ | +| Name | User defined | NetApp ONTAP As Built Report | The name of the As Built Report | +| Version | User defined | 1.0 | The report version | +| Status | User defined | Released | The report release status | +| ShowCoverPageImage | true / false | true | Toggle to enable/disable the display of the cover page image | +| ShowTableOfContents | true / false | true | Toggle to enable/disable table of contents | +| ShowHeaderFooter | true / false | true | Toggle to enable/disable document headers & footers | +| ShowTableCaptions | true / false | true | Toggle to enable/disable table captions/numbering | ### Options The **Options** schema allows certain options within the report to be toggled on or off. -| Sub-Schema | Setting | Default | Description | -|-----------------|--------------|---------|-----------------------------------------------------------------| -| Exclude: Vserver | Array List | Empty | Allow to filter on Vserver Name -| Exclude: MetroCluster | true / false | false | Allow to filter automatically all Vserver with -mc +| Sub-Schema | Setting | Default | Description | +| --------------------- | ------------ | ------- | -------------------------------------------------- | +| Exclude: Vserver | Array List | Empty | Allow to filter on Vserver Name | +| Exclude: MetroCluster | true / false | false | Allow to filter automatically all Vserver with -mc | ### InfoLevel @@ -148,26 +148,26 @@ The **InfoLevel** schema allows configuration of each section of the report at a There are 3 levels (0-2) of detail granularity for each section as follows; -| Setting | InfoLevel | Description | -|:-------:|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------| -| 0 | Disabled | Does not collect or display any information | -| 1 | Enabled / Summary | Provides summarised information for a collection of objects | -| 2 | Adv Summary | Provides condensed, detailed information for a collection of objects | +| Setting | InfoLevel | Description | +| :-----: | ----------------- | -------------------------------------------------------------------- | +| 0 | Disabled | Does not collect or display any information | +| 1 | Enabled / Summary | Provides summarised information for a collection of objects | +| 2 | Adv Summary | Provides condensed, detailed information for a collection of objects | The table below outlines the default and maximum **InfoLevel** settings for each section. -| Sub-Schema | Default Setting | Maximum Setting | -|--------------|:---------------:|:---------------:| -| Cluster | 1 | 2 | -| Node | 1 | 2 | -| Storage | 1 | 2 | -| Network | 1 | 2 | -| License | 1 | 2 | -| Vserver | 1 | 2 | -| Efficiency | 1 | 2 | -| Security | 1 | 2 | -| System | 1 | 2 | -| Replication | 1 | 2 | +| Sub-Schema | Default Setting | Maximum Setting | +| ----------- | :-------------: | :-------------: | +| Cluster | 1 | 2 | +| Node | 1 | 2 | +| Storage | 1 | 2 | +| Network | 1 | 2 | +| License | 1 | 2 | +| Vserver | 1 | 2 | +| Efficiency | 1 | 2 | +| Security | 1 | 2 | +| System | 1 | 2 | +| Replication | 1 | 2 | ### Healthcheck diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index e25a8d0..a314a1b 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -71,7 +71,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { #If metrocluster option remove all -mc vserver if ($Options.Exclude.MetroCluster) { - $Options.Exclude.Vserver = $Options.Exclude.Vserver + (get-ncvserver |where-object {$_ -like '*-mc'}).Vserver + $Options.Exclude.Vserver = $Options.Exclude.Vserver + (Get-NcVserver | Where-Object { $_ -like '*-mc' }).Vserver $exclude_vserver = $Options.Exclude.Vserver Write-PScriboMessage "exclude vserver = $exclude_vserver" } From 886380063e7adf86bfc53308ebd14c0426b2b314 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 13:27:18 -0400 Subject: [PATCH 17/27] No FCP Data Interface in Network Interfaces section #41 --- Src/Private/Get-AbrOntapNetworkMGMT.ps1 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Src/Private/Get-AbrOntapNetworkMGMT.ps1 b/Src/Private/Get-AbrOntapNetworkMGMT.ps1 index 3aeebdd..829583d 100755 --- a/Src/Private/Get-AbrOntapNetworkMGMT.ps1 +++ b/Src/Private/Get-AbrOntapNetworkMGMT.ps1 @@ -153,11 +153,14 @@ function Get-AbrOntapNetworkMgmt { } try { Section -ExcludeFromTOC -Style Heading6 'Data Network Interfaces' { - $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'data' -and $_.DataProtocols -ne 'fcp' -and $_.Vserver -notin $options.Exclude.Vserver } + $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.Role -eq 'data' -and $_.Vserver -notin $options.Exclude.Vserver } $ClusterObj = @() if ($ClusterData) { foreach ($Item in $ClusterData) { try { + if ($Item.Wwpn) { + $AddressData = $Item.Wwpn + } else {$AddressData = $Item.Address} $inObj = [ordered] @{ 'Data Interface' = $Item.InterfaceName 'Status' = Switch ($Item.OpStatus) { @@ -166,7 +169,7 @@ function Get-AbrOntapNetworkMgmt { default { $Item.OpStatus.ToString().ToUpper() } } 'Data Protocols' = [string]$Item.DataProtocols - 'Address' = $Item.Address + 'Address' = $AddressData 'Vserver' = $Item.Vserver } $ClusterObj += [pscustomobject]$inobj From c75b4427d149eb09e28ca4e2bf0bc5812b92b47c Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 13:28:10 -0400 Subject: [PATCH 18/27] Get-NetAppOntapAPI function do not return any data under PW5.1 #42 --- Src/Private/Get-NetAppOntapAPI.ps1 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Src/Private/Get-NetAppOntapAPI.ps1 b/Src/Private/Get-NetAppOntapAPI.ps1 index c244626..591acab 100644 --- a/Src/Private/Get-NetAppOntapAPI.ps1 +++ b/Src/Private/Get-NetAppOntapAPI.ps1 @@ -75,7 +75,12 @@ function Get-NetAppOntapAPI { Process { Try { - $response = Invoke-RestMethod -Method Get -Uri ($api + $uri) -Headers $headers -SkipCertificateCheck + if ($PSVersionTable.PSEdition -eq 'Core') { + $response = Invoke-RestMethod -Method Get -Uri ($api + $uri) -Headers $headers -SkipCertificateCheck + + } else { + $response = Invoke-RestMethod -Method Get -Uri ($api + $uri) -Headers $headers + } $response.records } Catch { Write-Verbose -Message $_ From baac8869c5a84c7473fd1e7ee9e9a0ff0874dff9 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 13:30:06 -0400 Subject: [PATCH 19/27] The Vserver Protocol Information section is not displayed if there are no data volumes. #43 --- .../Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 252 +++++++++--------- 1 file changed, 127 insertions(+), 125 deletions(-) diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index a314a1b..9df10ca 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -369,158 +369,160 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapVserverVolumesQuota -Vserver $SVM } } - Section -Style Heading4 "Protocol Information" { - Paragraph "The following section provides a summary of the Vserver protocol information on $($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 on $($SVM)." - BlankLine - Get-AbrOntapVserverNFSSummary -Vserver $SVM - if ($InfoLevel.Vserver -ge 2) { - Section -ExcludeFromTOC -Style Heading6 "NFS Options" { - Get-AbrOntapVserverNFSOption -Vserver $SVM - } + } + Section -Style Heading4 "Protocol Information" { + Paragraph "The following section provides a summary of the Vserver protocol information on $($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 on $($SVM)." + BlankLine + Get-AbrOntapVserverNFSSummary -Vserver $SVM + if ($InfoLevel.Vserver -ge 2) { + Section -ExcludeFromTOC -Style Heading6 "NFS Options" { + Get-AbrOntapVserverNFSOption -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-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 } } } - #---------------------------------------------------------------------------------------------# - # 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 on $($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 - } - } - Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group' { - Get-AbrOntapVserverCIFSLocalGroup -Vserver $SVM - } - Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group Members' { - Get-AbrOntapVserverCIFSLGMember -Vserver $SVM - } - if ($InfoLevel.Vserver -ge 2) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Options' { - Get-AbrOntapVserverCIFSOption -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 on $($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 Share' { - Get-AbrOntapVserverCIFSShare -Vserver $SVM + Section -ExcludeFromTOC -Style Heading6 'CIFS Domain Controller' { + Get-AbrOntapVserverCIFSDC -Vserver $SVM } - Section -ExcludeFromTOC -Style Heading6 'CIFS Share Configuration' { - Get-AbrOntapVserverCIFSShareProp -Vserver $SVM + } + Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group' { + Get-AbrOntapVserverCIFSLocalGroup -Vserver $SVM + } + Section -ExcludeFromTOC -Style Heading6 'CIFS Local Group Members' { + Get-AbrOntapVserverCIFSLGMember -Vserver $SVM + } + if ($InfoLevel.Vserver -ge 2) { + Section -ExcludeFromTOC -Style Heading6 'CIFS Options' { + Get-AbrOntapVserverCIFSOption -Vserver $SVM } - if ($InfoLevel.Vserver -ge 2) { - if (Get-NcCifsSession -VserverContext $SVM -Controller $Array) { - Section -ExcludeFromTOC -Style Heading6 'CIFS Sessions' { - Get-AbrOntapVserverCIFSSession -Vserver $SVM - } + } + 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 } } } } - #---------------------------------------------------------------------------------------------# - # 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 on $($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 on $($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 on $($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 on $($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 on $($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 $NonMappedLunFCP) { - Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Lun Information' { - Paragraph "The following section provides information of Non Mapped Lun on $($SVM)." - BlankLine - $NonMappedLun - } + } + #---------------------------------------------------------------------------------------------# + # 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 on $($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 $NonMappedLunFCP) { + Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Lun Information' { + Paragraph "The following section provides information of Non Mapped Lun on $($SVM)." + BlankLine + $NonMappedLun } } } } - #---------------------------------------------------------------------------------------------# - # 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 on $($SVM)." - BlankLine - Get-AbrOntapVserverCGSummary -Vserver $SVM - foreach ($CG in $CGs) { + } + #---------------------------------------------------------------------------------------------# + # 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 on $($SVM)." + BlankLine + Get-AbrOntapVserverCGSummary -Vserver $SVM + foreach ($CG in $CGs) { + if ($CG.luns) { Section -ExcludeFromTOC -Style Heading6 "$($CG.name) Luns" { Get-AbrOntapVserverCGLun -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 on $($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 on $($SVM)." + BlankLine + Get-AbrOntapVserverS3Summary -Vserver $SVM + Section -ExcludeFromTOC -Style Heading6 'S3 Buckets' { + Get-AbrOntapVserverS3Bucket -Vserver $SVM } } } From a9de70f8c72ceb7945adcbd9ffbd8da3831385a0 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 13:32:55 -0400 Subject: [PATCH 20/27] Increased Required Modules version --- AsBuiltReport.NetApp.ONTAP.psd1 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/AsBuiltReport.NetApp.ONTAP.psd1 b/AsBuiltReport.NetApp.ONTAP.psd1 index 2320593..ee9c518 100755 --- a/AsBuiltReport.NetApp.ONTAP.psd1 +++ b/AsBuiltReport.NetApp.ONTAP.psd1 @@ -54,11 +54,11 @@ RequiredModules = @( @{ ModuleName = 'AsBuiltReport.Core'; - ModuleVersion = '1.3.0' + ModuleVersion = '1.4.0' }, @{ ModuleName = 'NetApp.ONTAP'; - ModuleVersion = '9.10.1.2111' + ModuleVersion = '9.15.1.2407' } ) @@ -128,6 +128,4 @@ # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. # DefaultCommandPrefix = '' -} - - +} \ No newline at end of file From 07f1a03415393cd18c6a1f20b12723111d659495 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 13:34:17 -0400 Subject: [PATCH 21/27] Update the Eomm/why-don-t-you-tweet action to v2.0.0 --- .github/workflows/Release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index a4b943a..54a6b48 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -8,7 +8,7 @@ jobs: publish-to-gallery: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set PSRepository to Trusted for PowerShell Gallery shell: pwsh run: | @@ -33,7 +33,7 @@ jobs: needs: publish-to-gallery runs-on: ubuntu-latest steps: - - uses: Eomm/why-don-t-you-tweet@v1 + - uses: Eomm/why-don-t-you-tweet@v2 # We don't want to tweet if the repository is not a public one if: ${{ !github.event.repository.private }} with: From ab64f83cf1f6541da8479c0ccd158757a7e0e143 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 15:47:59 -0400 Subject: [PATCH 22/27] Initial Vserver Nvme Supprot --- AsBuiltReport.NetApp.ONTAP.json | 1 + CHANGELOG.md | 23 +++++- Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 | 1 + .../Get-AbrOntapVserverNvmeFcAdapter.ps1 | 75 +++++++++++++++++++ .../Get-AbrOntapVserverNvmeInterface.ps1 | 72 ++++++++++++++++++ .../Get-AbrOntapVserverNvmeTcpAdapter.ps1 | 74 ++++++++++++++++++ .../Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 23 ++++++ 7 files changed, 267 insertions(+), 2 deletions(-) create mode 100755 Src/Private/Get-AbrOntapVserverNvmeFcAdapter.ps1 create mode 100755 Src/Private/Get-AbrOntapVserverNvmeInterface.ps1 create mode 100755 Src/Private/Get-AbrOntapVserverNvmeTcpAdapter.ps1 diff --git a/AsBuiltReport.NetApp.ONTAP.json b/AsBuiltReport.NetApp.ONTAP.json index a09f9ae..8599f5e 100755 --- a/AsBuiltReport.NetApp.ONTAP.json +++ b/AsBuiltReport.NetApp.ONTAP.json @@ -55,6 +55,7 @@ "Vserver": { "Status": true, "Iscsi": true, + "Nvme": true, "FCP": true, "CG": true, "NFS": true, diff --git a/CHANGELOG.md b/CHANGELOG.md index 720b1b0..cee54aa 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,30 @@ # :arrows_counterclockwise: NetApp ONTAP Storage As Built Report Changelog -## [0.6.7] - 2024-02-02 +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.6.7] - Unreleased + +### Added + +- Initial Vserver NVME support ### Changed -- Code Cleanup +- Update the Eomm/why-don-t-you-tweet action to v2.0.0 +- General code cleanup/improvements +- Increased Required Modules version: + - AsBuiltReport.Core v1.4.0 + - NetApp.Ontap v9.15.1.2407 + +### Fixed +- Fix [#40](https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/issues/40) +- Fix [#41](https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/issues/41) +- Fix [#42](https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/issues/42) +- Fix [#43](https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/issues/43) ## [0.6.6] - 2023-08-07 diff --git a/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 b/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 index 9aadbd4..6587d0b 100755 --- a/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 +++ b/Src/Private/Get-AbrOntapVserverFcpAdapter.ps1 @@ -52,6 +52,7 @@ function Get-AbrOntapVserverFcpAdapter { $TableParams = @{ Name = "FCP Physical Adapter - $($ClusterInfo.ClusterName)" List = $false + ColumnWidths = 32, 17, 17, 17, 17 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" diff --git a/Src/Private/Get-AbrOntapVserverNvmeFcAdapter.ps1 b/Src/Private/Get-AbrOntapVserverNvmeFcAdapter.ps1 new file mode 100755 index 0000000..e3e9da4 --- /dev/null +++ b/Src/Private/Get-AbrOntapVserverNvmeFcAdapter.ps1 @@ -0,0 +1,75 @@ +function Get-AbrOntapVserverNvmeFcAdapter { + <# + .SYNOPSIS + Used by As Built Report to retrieve NetApp ONTAP Vserver Nvme FC adapter information from the Cluster Management Network + .DESCRIPTION + + .NOTES + Version: 0.6.7 + Author: Jonathan Colon + Twitter: @jcolonfzenpr + Github: rebelinux + .EXAMPLE + + .LINK + + #> + param ( + [Parameter ( + Position = 0, + Mandatory)] + [string] + $Vserver + ) + + begin { + Write-PScriboMessage "Collecting ONTAP Vserver Nvme FC adapter information." + } + + process { + try { + $VserverData = Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object {$_.PhysicalProtocol -eq 'fibre_channel'} | Sort-Object -Property HomeNode + $VserverObj = @() + if ($VserverData) { + foreach ($Item in $VserverData) { + try { + $inObj = [ordered] @{ + 'Node Name' = $Item.HomeNode + 'Adapter' = $Item.HomePort + 'Protocol' = $Item.PhysicalProtocol + 'WWNN' = $Item.FcWwnn + 'WWPN' = $Item.FcWwpn + 'Status' = Switch ($Item.StatusAdmin) { + 'up' { 'Up' } + 'down' { 'Down' } + default { $Item.StatusAdmin } + } + } + $VserverObj += [pscustomobject]$inobj + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + if ($Healthcheck.Vserver.FCP) { + $VserverObj | Where-Object { $_.'Status' -like 'Down' } | Set-Style -Style Warning -Property 'Status' + } + + $TableParams = @{ + Name = "Nvme FC Physical Adapter - $($Vserver)" + List = $false + ColumnWidths = 25, 12, 15, 18, 18, 12 + + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $VserverObj | Table @TableParams + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + end {} + +} \ No newline at end of file diff --git a/Src/Private/Get-AbrOntapVserverNvmeInterface.ps1 b/Src/Private/Get-AbrOntapVserverNvmeInterface.ps1 new file mode 100755 index 0000000..204c1c1 --- /dev/null +++ b/Src/Private/Get-AbrOntapVserverNvmeInterface.ps1 @@ -0,0 +1,72 @@ +function Get-AbrOntapVserverNvmeInterface { + <# + .SYNOPSIS + Used by As Built Report to retrieve NetApp ONTAP Vserver NVME interface information from the Cluster Management Network + .DESCRIPTION + + .NOTES + Version: 0.6.7 + Author: Jonathan Colon + Twitter: @jcolonfzenpr + Github: rebelinux + .EXAMPLE + + .LINK + + #> + param ( + [Parameter ( + Position = 0, + Mandatory)] + [string] + $Vserver + ) + + begin { + Write-PScriboMessage "Collecting ONTAP Vserver NVME interface information." + } + + process { + try { + $VserverData = Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Sort-Object -Property TransportProtocols + $VserverObj = @() + if ($VserverData) { + foreach ($Item in $VserverData) { + try { + $inObj = [ordered] @{ + 'Interface Name' = $Item.Lif + 'Transport Address' = $Item.TransportAddress + 'Transport Protocols' = $Item.TransportProtocols + 'Status' = Switch ($Item.StatusAdmin) { + 'up' { 'Up' } + 'down' { 'Down' } + default { $Item.StatusAdmin } + } + } + $VserverObj += [pscustomobject]$inobj + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + if ($Healthcheck.Vserver.Nvme) { + $VserverObj | Where-Object { $_.'Status' -like 'Down' } | Set-Style -Style Warning -Property 'Status' + } + + $TableParams = @{ + Name = "NVME Interface - $($Vserver)" + List = $false + ColumnWidths = 40, 36, 12, 12 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $VserverObj | Table @TableParams + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + end {} + +} \ No newline at end of file diff --git a/Src/Private/Get-AbrOntapVserverNvmeTcpAdapter.ps1 b/Src/Private/Get-AbrOntapVserverNvmeTcpAdapter.ps1 new file mode 100755 index 0000000..4af45b6 --- /dev/null +++ b/Src/Private/Get-AbrOntapVserverNvmeTcpAdapter.ps1 @@ -0,0 +1,74 @@ +function Get-AbrOntapVserverNvmeTcpAdapter { + <# + .SYNOPSIS + Used by As Built Report to retrieve NetApp ONTAP Vserver Nvme TCP adapter information from the Cluster Management Network + .DESCRIPTION + + .NOTES + Version: 0.6.7 + Author: Jonathan Colon + Twitter: @jcolonfzenpr + Github: rebelinux + .EXAMPLE + + .LINK + + #> + param ( + [Parameter ( + Position = 0, + Mandatory)] + [string] + $Vserver + ) + + begin { + Write-PScriboMessage "Collecting ONTAP Vserver Nvme TCP adapter information." + } + + process { + try { + $VserverData = Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object {$_.PhysicalProtocol -eq 'ethernet'} | Sort-Object -Property HomeNode + $VserverObj = @() + if ($VserverData) { + foreach ($Item in $VserverData) { + try { + $inObj = [ordered] @{ + 'Node Name' = $Item.HomeNode + 'Adapter' = $Item.HomePort + 'Protocol' = $Item.PhysicalProtocol + 'IP Address' = $Item.TransportAddress + 'Status' = Switch ($Item.StatusAdmin) { + 'up' { 'Up' } + 'down' { 'Down' } + default { $Item.StatusAdmin } + } + } + $VserverObj += [pscustomobject]$inobj + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + if ($Healthcheck.Vserver.FCP) { + $VserverObj | Where-Object { $_.'Status' -like 'Down' } | Set-Style -Style Warning -Property 'Status' + } + + $TableParams = @{ + Name = "Nvme TCP Physical Adapter - $($Vserver)" + List = $false + ColumnWidths = 30, 17, 17, 20, 16 + + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $VserverObj | Table @TableParams + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + end {} + +} \ No newline at end of file diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 9df10ca..11c788c 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -436,6 +436,29 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } } #---------------------------------------------------------------------------------------------# + # 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 on $($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 + } + } + HomePort 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 + } + } + } + #---------------------------------------------------------------------------------------------# # ISCSI Section # #---------------------------------------------------------------------------------------------# if ( Get-NcIscsiService -Controller $Array | Where-Object { $_.Vserver -eq $SVM } ) { From c1f5fe171e2c47130195b2f4714693b469f4f229 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Thu, 8 Aug 2024 22:19:41 -0400 Subject: [PATCH 23/27] Added NVME Namespace storage --- .../Get-AbrOntapVserverNamespaceStorage.ps1 | 96 +++++++++++++++++++ .../Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 25 ++++- 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100755 Src/Private/Get-AbrOntapVserverNamespaceStorage.ps1 diff --git a/Src/Private/Get-AbrOntapVserverNamespaceStorage.ps1 b/Src/Private/Get-AbrOntapVserverNamespaceStorage.ps1 new file mode 100755 index 0000000..3674b95 --- /dev/null +++ b/Src/Private/Get-AbrOntapVserverNamespaceStorage.ps1 @@ -0,0 +1,96 @@ +function Get-AbrOntapVserverNamespaceStorage { + <# + .SYNOPSIS + Used by As Built Report to retrieve NetApp ONTAP vserver namespace information from the Cluster Management Network + .DESCRIPTION + + .NOTES + Version: 0.6.7 + Author: Jonathan Colon + Twitter: @jcolonfzenpr + Github: rebelinux + .EXAMPLE + + .LINK + + #> + param ( + [Parameter ( + Position = 0, + Mandatory)] + [string] + $Vserver + ) + + begin { + Write-PScriboMessage "Collecting ONTAP Vserver namespace information." + } + + process { + try { + $VserverNamespace = Get-NcNvmeNamespace -VserverContext $Vserver -Controller $Arra + $VserverObj = @() + if ($VserverNamespace) { + foreach ($Item in $VserverNamespace) { + try { + $namespacemap = Get-NcNvmeSubsystemMap -Vserver $Vserver -Controller $Array | Where-Object { $_.Path -eq $Item.Path } + $namespacepath = $Item.Path.split('/') + $namespace = $namespacepath[3] + $available = $Item.Size - $Item.SizeUsed + $used = ($Item.SizeUsed / $Item.Size) * 100 + $inObj = [ordered] @{ + 'Namespace Name' = $namespace + 'Parent Volume' = $Item.Volume + 'Path' = $Item.Path + 'Serial Number' = $Item.Uuid + 'Subsystem Map' = Switch (($namespacemap).count) { + 0 { "None" } + default { $namespacemap.Subsystem } + } + 'Home Node ' = $Item.Node + 'Capacity' = $Item.Size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue + 'Available' = $available | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue + 'Used' = $used | ConvertTo-FormattedNumber -Type Percent -ErrorAction SilentlyContinue + 'OS Type' = $Item.Ostype + 'Is Mapped' = Switch ([string]::IsNullOrEmpty($Item.Subsystem)) { + $true { "No" } + $false { "Yes" } + default { $Item.Subsystem } + } + 'ReadOnly' = ConvertTo-TextYN $Item.IsReadOnly + 'Status' = Switch ($Item.State) { + 'online' { 'Up' } + 'offline' { 'Down' } + default { $Item.Online } + } + } + $VserverObj = [pscustomobject]$inobj + + if ($Healthcheck.Vserver.Status) { + $VserverObj | Where-Object { $_.'Status' -like 'Down' } | Set-Style -Style Warning -Property 'Status' + $VserverObj | Where-Object { $_.'Used' -ge 90 } | Set-Style -Style Critical -Property 'Used' + $VserverObj | Where-Object { $_.'Is Mapped' -eq 'No' } | Set-Style -Style Warning -Property 'Is Mapped' + } + + $TableParams = @{ + Name = "Namespace - $($namespace)" + List = $true + ColumnWidths = 25, 75 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $VserverObj | Sort-Object -Property 'Namespace Name' | Table @TableParams + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + end {} + +} \ No newline at end of file diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 11c788c..7d8dbf9 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -448,7 +448,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapVserverNvmeFcAdapter -Vserver $SVM } } - HomePort if (Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object { $_.PhysicalProtocol -eq 'ethernet' }) { + if (Get-NcNvmeInterface -VserverContext $Vserver -Controller $Array | Where-Object { $_.PhysicalProtocol -eq 'ethernet' }) { Section -ExcludeFromTOC -Style Heading6 'Nvme TCP Physical Adapter' { Get-AbrOntapVserverNvmeTcpAdapter -Vserver $SVM } @@ -518,6 +518,29 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { } } #---------------------------------------------------------------------------------------------# + # 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 on $($SVM)." + BlankLine + Get-AbrOntapVserverNamespaceStorage -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 $NonMappedLunFCP) { + # Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Lun Information' { + # Paragraph "The following section provides information of Non Mapped Lun on $($SVM)." + # BlankLine + # $NonMappedLun + # } + # } + # } + } + } + #---------------------------------------------------------------------------------------------# # Consistency Groups Section # #---------------------------------------------------------------------------------------------# $CGs = Get-NetAppOntapAPI -uri "/api/application/consistency-groups?svm=$SVM&fields=**&return_records=true&return_timeout=15" From 7090cb2872dfebedb3d11f1cccd117a0c3acbb17 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Fri, 9 Aug 2024 15:43:28 -0400 Subject: [PATCH 24/27] Improvements to NVME section --- Src/Private/Get-AbrOntapEfficiencyAggr.ps1 | 2 +- Src/Private/Get-AbrOntapNetworkMGMT.ps1 | 2 +- .../Get-AbrOntapVserverCGNamespace.ps1 | 85 +++++++++++++++++++ .../Get-AbrOntapVserverNonMappedNamespace.ps1 | 70 +++++++++++++++ Src/Private/Get-AbrOntapVserverSubsystem.ps1 | 82 ++++++++++++++++++ .../Invoke-AsBuiltReport.NetApp.ONTAP.ps1 | 33 ++++--- 6 files changed, 258 insertions(+), 16 deletions(-) create mode 100755 Src/Private/Get-AbrOntapVserverCGNamespace.ps1 create mode 100755 Src/Private/Get-AbrOntapVserverNonMappedNamespace.ps1 create mode 100755 Src/Private/Get-AbrOntapVserverSubsystem.ps1 diff --git a/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 b/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 index cfa2dfd..b6d7e08 100755 --- a/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 +++ b/Src/Private/Get-AbrOntapEfficiencyAggr.ps1 @@ -91,7 +91,7 @@ function Get-AbrOntapEfficiencyAggr { } if ($OutObj) { Section -Style Heading4 'HealthCheck - Volume with Disabled Deduplication' { - Paragraph "The following section provides the Volume efficiency healthcheck Information on $($ClusterInfo.ClusterName)." + Paragraph "The following table provides the Volume efficiency healthcheck Information on $($ClusterInfo.ClusterName)." BlankLine $OutObj | Table @TableParams } diff --git a/Src/Private/Get-AbrOntapNetworkMGMT.ps1 b/Src/Private/Get-AbrOntapNetworkMGMT.ps1 index 829583d..c21f426 100755 --- a/Src/Private/Get-AbrOntapNetworkMGMT.ps1 +++ b/Src/Private/Get-AbrOntapNetworkMGMT.ps1 @@ -198,7 +198,7 @@ function Get-AbrOntapNetworkMgmt { try { if ((Get-NcNetInterface -Controller $Array | Where-Object { $_.DataProtocols -ne 'fcp' -and $_.IsHome -like "False" }) -and $Healthcheck.Network.Interface) { Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Check If Network Interface is Home' { - Paragraph "The following section provides the LIF Home Status Information on $($ClusterInfo.ClusterName)." + Paragraph "The following table provides the LIF Home Status Information on $($ClusterInfo.ClusterName)." BlankLine $ClusterData = Get-NcNetInterface -Controller $Array | Where-Object { $_.DataProtocols -ne 'fcp' -and $_.IsHome -like "False" } $ClusterObj = @() diff --git a/Src/Private/Get-AbrOntapVserverCGNamespace.ps1 b/Src/Private/Get-AbrOntapVserverCGNamespace.ps1 new file mode 100755 index 0000000..f7e093a --- /dev/null +++ b/Src/Private/Get-AbrOntapVserverCGNamespace.ps1 @@ -0,0 +1,85 @@ +function Get-AbrOntapVserverCGNamespace { + <# + .SYNOPSIS + Used by As Built Report to retrieve NetApp ONTAP Vserver Consistency Groups Namespace information from the Cluster Management Network + .DESCRIPTION + + .NOTES + Version: 0.6.7 + Author: Jonathan Colon + Twitter: @jcolonfzenpr + Github: rebelinux + .EXAMPLE + + .LINK + + #> + param ( + [Parameter ( + Position = 0, + Mandatory)] + $CGObj + ) + + begin { + Write-PScriboMessage "Collecting ONTAP Vserver Consistency Groups namespace information." + } + + process { + try { + $NamespaceData = $CGObj.namespaces + $CGNamespaceObj = @() + if ($NamespaceData) { + foreach ($Item in $NamespaceData) { + try { + $inObj = [ordered] @{ + 'Name' = $Item.Name.Split('/')[3] + 'Capacity' = Switch ([string]::IsNullOrEmpty($Item.space.size)) { + $true { '-' } + $false { $Item.space.size | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } + } + 'Used' = Switch ([string]::IsNullOrEmpty($Item.space.used)) { + $true { '-' } + $false { $Item.space.used | ConvertTo-FormattedNumber -Type Datasize -ErrorAction SilentlyContinue } + default { '-' } + } + 'OS Type' = ConvertTo-EmptyToFiller $Item.os_type + 'Volume State' = $Item.status.container_state + 'Mapped' = ConvertTo-TextYN $Item.status.mapped + 'Read Only' = ConvertTo-TextYN $Item.status.read_only + 'State' = $Item.status.state + + + } + $CGNamespaceObj += [pscustomobject]$inobj + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + if ($Healthcheck.Vserver.CG) { + $CGNamespaceObj | Where-Object { $_.'Volume State' -ne 'online' } | Set-Style -Style Warning -Property 'Volume State' + $CGNamespaceObj | Where-Object { $_.'Mapped' -eq 'No' } | Set-Style -Style Warning -Property 'Mapped' + $CGNamespaceObj | Where-Object { $_.'Read Only' -eq 'Yes' } | Set-Style -Style Warning -Property 'Read Only' + $CGNamespaceObj | Where-Object { $_.'State' -eq 'offline' } | Set-Style -Style Warning -Property 'State' + } + + $TableParams = @{ + Name = "Consistency Group Namespace - $($CGObj.Name)" + List = $false + ColumnWidths = 30, 10, 9, 10, 11, 10, 10, 10 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $CGNamespaceObj | Sort-Object -Property Name | Table @TableParams + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + end {} + +} \ No newline at end of file diff --git a/Src/Private/Get-AbrOntapVserverNonMappedNamespace.ps1 b/Src/Private/Get-AbrOntapVserverNonMappedNamespace.ps1 new file mode 100755 index 0000000..9b49d31 --- /dev/null +++ b/Src/Private/Get-AbrOntapVserverNonMappedNamespace.ps1 @@ -0,0 +1,70 @@ +function Get-AbrOntapVserverNonMappedNamespace { + <# + .SYNOPSIS + Used by As Built Report to retrieve NetApp ONTAP NVMW Non Mapped amespace information from the Cluster Management Network + .DESCRIPTION + + .NOTES + Version: 0.6.7 + Author: Jonathan Colon + Twitter: @jcolonfzenpr + Github: rebelinux + .EXAMPLE + + .LINK + + #> + param ( + [Parameter ( + Position = 0, + Mandatory)] + [string] + $Vserver + ) + + begin { + Write-PScriboMessage "Collecting ONTAP NVME Non Mapped Namespace information." + } + + process { + try { + $NamespaceFilter = Get-NcNvmeNamespace -VserverContext $Vserver -Controller $Array | Where-Object { -Not $_.Subsystem } + $OutObj = @() + if ($NamespaceFilter) { + foreach ($Item in $NamespaceFilter) { + try { + $namespacename = (($Item.Path).split('/'))[3] + $inObj = [ordered] @{ + 'Volume Name' = $Item.Volume + 'Lun Name' = $namespacename + 'Type' = $Item.Ostype + 'Mapped' = "No" + 'State' = $Item.State + } + $OutObj += [pscustomobject]$inobj + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + if ($Healthcheck.Vserver.Status) { + $OutObj | Set-Style -Style Warning + } + + $TableParams = @{ + Name = "HealthCheck - Non-Mapped Namespace - $($Vserver)" + List = $false + ColumnWidths = 30, 30, 10, 10, 20 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + end {} + +} \ No newline at end of file diff --git a/Src/Private/Get-AbrOntapVserverSubsystem.ps1 b/Src/Private/Get-AbrOntapVserverSubsystem.ps1 new file mode 100755 index 0000000..1b90ff6 --- /dev/null +++ b/Src/Private/Get-AbrOntapVserverSubsystem.ps1 @@ -0,0 +1,82 @@ +function Get-AbrOntapVserverSubsystem { + <# + .SYNOPSIS + Used by As Built Report to retrieve NetApp ONTAP vserver subsystem information from the Cluster Management Network + .DESCRIPTION + + .NOTES + Version: 0.6.7 + Author: Jonathan Colon + Twitter: @jcolonfzenpr + Github: rebelinux + .EXAMPLE + + .LINK + + #> + param ( + [Parameter ( + Position = 0, + Mandatory)] + [string] + $Vserver + ) + + begin { + Write-PScriboMessage "Collecting ONTAP Vserver Subsystem information." + } + + process { + try { + $VserverSubsystem = Get-NcNvmeSubsystem -VserverContext $Vserver -Controller $Array + $VserverObj = @() + if ($VserverSubsystem) { + foreach ($Item in $VserverSubsystem) { + try { + $namespacemap = Get-NcNvmeSubsystemMap -Controller $Array | Where-Object { $_.Subsystem -eq $Item.Subsystem } | Select-Object -ExpandProperty Path + $MappedNamespace = @() + foreach ($namespace in $namespacemap) { + try { + $namespacename = $namespace.split('/') + $MappedNamespace += $namespacename[3] + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + $inObj = [ordered] @{ + 'Subsystem Name' = $Item.Subsystem + 'Type' = $Item.Ostype + 'Target NQN' = $Item.TargetNqn + 'Host NQN' = $Item.Hosts.Nqn + 'Mapped Namespace' = Switch (($MappedNamespace).count) { + 0 { "None" } + default { $MappedNamespace } + } + } + $VserverObj = [pscustomobject]$inobj + if ($Healthcheck.Vserver.Status) { + $VserverObj | Where-Object { ($_.'Mapped Namespace').count -eq 0 } | Set-Style -Style Warning -Property 'Mapped Namespace' + } + + $TableParams = @{ + Name = "Subsystem - $($Item.Subsystem)" + List = $true + ColumnWidths = 25, 75 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $VserverObj | Table @TableParams + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message + } + } + + end {} + +} \ No newline at end of file diff --git a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 index 7d8dbf9..a3a2f2b 100755 --- a/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.NetApp.ONTAP.ps1 @@ -507,7 +507,7 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapVserverLunIgroup -Vserver $SVM } $NonMappedLun = Get-AbrOntapVserverNonMappedLun -Vserver $SVM - if ($Healthcheck.Vserver.Status -and $NonMappedLunFCP) { + 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 on $($SVM)." BlankLine @@ -525,19 +525,19 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Paragraph "The following section provides the Namespace Storage Information on $($SVM)." BlankLine Get-AbrOntapVserverNamespaceStorage -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 $NonMappedLunFCP) { - # Section -ExcludeFromTOC -Style Heading6 'HealthCheck - Non-Mapped Lun Information' { - # Paragraph "The following section provides information of Non Mapped Lun on $($SVM)." - # BlankLine - # $NonMappedLun - # } - # } - # } + 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 on $($SVM)." + BlankLine + $NonMappedNamespace + } + } + } } } #---------------------------------------------------------------------------------------------# @@ -555,6 +555,11 @@ function Invoke-AsBuiltReport.NetApp.ONTAP { Get-AbrOntapVserverCGLun -CGObj $CG } } + if ($CG.namespaces) { + Section -ExcludeFromTOC -Style Heading6 "$($CG.name) Namespaces" { + Get-AbrOntapVserverCGNamespace -CGObj $CG + } + } } } } From a5d2fa01f979d83501cfbf1c618180c6b4a6812c Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Fri, 9 Aug 2024 15:53:45 -0400 Subject: [PATCH 25/27] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cee54aa..109bb9d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Initial Vserver NVME support +- Added option for MetroCluster volume exclusions (*.mc) @MicKBfr ### Changed From 6b279c17170b901b06c5aeb64b76d63c16666134 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Fri, 9 Aug 2024 15:54:00 -0400 Subject: [PATCH 26/27] Update Sample NetApp As-Built Report.html --- Samples/Sample NetApp As-Built Report.html | 3229 ++++++++++---------- 1 file changed, 1592 insertions(+), 1637 deletions(-) diff --git a/Samples/Sample NetApp As-Built Report.html b/Samples/Sample NetApp As-Built Report.html index d635db4..5199277 100755 --- a/Samples/Sample NetApp As-Built Report.html +++ b/Samples/Sample NetApp As-Built Report.html @@ -8,277 +8,291 @@ 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; } - .Warning { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #000000; background-color: #f4a71c; } - .Header { font-family: 'Arial'; font-size: 0.83rem; text-align: center; font-weight: normal; color: #565656; } - .TOC { font-family: 'Arial'; font-size: 1.33rem; text-align: left; font-weight: normal; color: #0067c5; } - .Info { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #000000; background-color: #5ac0ed; } - .Heading4 { font-family: 'Arial'; font-size: 0.92rem; text-align: left; font-weight: normal; color: #0067c5; } - .Normal { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; } + .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; } + .Heading4 { font-family: 'Segoe Ui'; font-size: 1.00rem; text-align: left; font-weight: normal; color: #958026; } + .Header { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: center; font-weight: normal; color: #565656; } + .Heading2 { font-family: 'Segoe Ui'; font-size: 1.17rem; text-align: left; font-weight: normal; color: #204369; } + .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; } + .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; } - .TableDefaultRow { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; } - .Heading2 { font-family: 'Arial'; font-size: 1.17rem; text-align: left; font-weight: normal; color: #0067c5; } - .Heading3 { font-family: 'Arial'; font-size: 1.00rem; text-align: left; font-weight: normal; color: #0067c5; } - .TableDefaultHeading { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #ffffff; background-color: #0067c5; } - .Heading5 { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #0067c5; } - .Heading1 { font-family: 'Arial'; font-size: 1.33rem; text-align: left; font-weight: normal; color: #0067c5; } - .Footer { font-family: 'Arial'; font-size: 0.83rem; text-align: center; font-weight: normal; color: #565656; } - .Title3 { font-family: 'Arial'; font-size: 1.00rem; text-align: left; font-weight: normal; color: #58595b; } - .Title2 { font-family: 'Arial'; font-size: 1.50rem; text-align: center; font-weight: normal; color: #58595b; } - .Critical { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #000000; background-color: #f1655c; } - .Title { font-family: 'Arial'; font-size: 2.00rem; text-align: center; font-weight: normal; color: #0067c5; } - .OK { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #000000; background-color: #81bc50; } - .Heading6 { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #0067c5; } - .Caption { font-family: 'Arial'; font-size: 0.83rem; text-align: center; font-weight: normal; font-style: italic; color: #565656; } - table.tabledefault { padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #0067c5; border-collapse: collapse; } - table.tabledefault th { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #ffffff; background-color: #0067c5; padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #0067c5; border-collapse: collapse; } - table.tabledefault td { padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #0067c5; border-collapse: collapse; } - table.tabledefault tr:nth-child(odd) { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #0067c5; border-collapse: collapse; } - table.tabledefault tr:nth-child(even) { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #0067c5; border-collapse: collapse; } + .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; } + table.tabledefault tr:nth-child(odd) { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #072e58; border-collapse: collapse; } + table.tabledefault tr:nth-child(even) { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.17rem 0.13rem 0.17rem; border-style: solid; border-width: 0.02rem; border-color: #072e58; border-collapse: collapse; } table.borderless { padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; } - table.borderless th { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; } + table.borderless th { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; } table.borderless td { padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; } - table.borderless tr:nth-child(odd) { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; } - table.borderless tr:nth-child(even) { font-family: 'Arial'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; } + table.borderless tr:nth-child(odd) { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; } + table.borderless tr:nth-child(even) { font-family: 'Segoe Ui'; font-size: 0.83rem; text-align: left; font-weight: normal; color: #565656; padding: 0.08rem 0.33rem 0rem 0.33rem; border-style: none; border-collapse: collapse; }

-
NetApp ONTAP As Built Report - v1.0

Table of Contents

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

Table of Contents

1ZENPR-HQ Cluster Report
1.1   Cluster Information
1.1.1      Cluster HA Status
1.1.2      Cluster AutoSupport Status
1.2   Node Summary
1.2.1      Node Inventory
1.2.1.1         Node Vol0 Inventory
1.2.1.2         Node Hardware Inventory
1.3   Storage Summary
1.3.1      Aggregate Inventory
1.3.1.1         Aggregate Options
1.3.1.1.1            PHARMAX_HQ_01_SSD_1 Options
1.3.1.1.2            PHARMAX_HQ_02_SSD_1 Options
1.3.1.2         FabricPool
1.3.1.2.1            FabriPool Object Store Configuration
1.3.2      Disk Summary
1.3.2.1         Per Node Disk Assignment
1.3.2.2         Disk Owned by Node ZENPR-HQ-01
1.3.2.3         Disk Owned by Node ZENPR-HQ-02
1.3.2.4         Disk Container Type
1.3.2.5         Disk Inventory
1.4   Licenses Summary
1.4.1      ZENPR-HQ-01 License Usage
1.4.2      ZENPR-HQ-02 License Usage
1.4.3      License Features
1.5   Network Summary
1.5.1      IPSpace
1.5.1.1         Network Ports
1.5.1.1.1            ZENPR-HQ-01 Ports
1.5.1.1.2            ZENPR-HQ-02 Ports
1.5.1.2         Network Link Aggregation Group
1.5.1.2.1            ZENPR-HQ-01 IFGRP
1.5.1.2.2            ZENPR-HQ-02 IFGRP
1.5.1.3         Network VLANs
1.5.1.3.1            ZENPR-HQ-01 Vlans
1.5.1.3.2            ZENPR-HQ-02 Vlans
1.5.1.4         Broadcast Domain
1.5.1.5         Failover Groups
1.5.1.6         Network Subnets
1.5.1.7         ZENPR-HQ Vserver Routes
1.5.1.7.1            Network Interface Routes
1.5.1.8         NAS Vserver Routes
1.5.1.8.1            Network Interface Routes
1.5.1.9         NFS Vserver Routes
1.5.1.9.1            Network Interface Routes
1.5.1.10         SAN Vserver Routes
1.5.1.10.1            Network Interface Routes
1.5.1.11         Network Interfaces
1.5.1.11.1            Cluster Network Interfaces
1.5.1.11.2            Management Network Interfaces
1.5.1.11.3            Intercluster Network Interfaces
1.5.1.11.4            Data Network Interfaces
1.6   Vserver Summary
1.6.1      NAS Vserver Configuration
1.6.1.1         Root Volume
1.6.1.2         Volumes QoS Policy
1.6.1.2.1            Volumes Fixed QoS Policy
1.6.1.2.2            Volumes Adaptive QoS Policy
1.6.1.3         Storage Volumes
1.6.1.3.1            Per Volumes QoS Policy
1.6.1.3.2            FlexGroup Volumes
1.6.1.3.3            Flexclone Volumes
1.6.1.3.4            Flexcache Volumes
1.6.1.4         Volumes Snapshot Configuration
1.6.1.4.1            HealthCheck - Volumes Snapshot
1.6.1.5         Export Policy
1.6.1.6         Qtrees
1.6.1.7         Volume Quota
1.6.1.7.1            NAS Vserver Volume Quota Status
1.6.1.7.2            NAS Vserver Volume Quota Information
1.6.1.7.3            NAS Vserver Volume Quota Report (Disk)
1.6.1.7.4            NAS Vserver Volume Quota Report (File)
1.6.1.8         Protocol Information Summary
1.6.1.8.1            NFS Services
1.6.1.8.1.1               NFS Options
1.6.1.8.1.2               NFS Volume Export
1.6.1.8.2            CIFS Services Summary
1.6.1.8.2.1               CIFS Service Configuration
1.6.1.8.2.2               CIFS Domain Controller
1.6.1.8.2.3               CIFS Local Group
1.6.1.8.2.4               CIFS Options
1.6.1.8.2.5               CIFS Share
1.6.1.8.3            S3 Services Configuration Summary
1.6.1.8.3.1               S3 Buckets
1.6.2      NFS Vserver Configuration
1.6.2.1         Root Volume
1.6.2.2         Volumes QoS Policy
1.6.2.2.1            Volumes Fixed QoS Policy
1.6.2.2.2            Volumes Adaptive QoS Policy
1.6.2.3         Storage Volumes
1.6.2.3.1            Per Volumes QoS Policy
1.6.2.3.2            FlexGroup Volumes
1.6.2.4         Volumes Snapshot Configuration
1.6.2.4.1            HealthCheck - Volumes Snapshot
1.6.2.5         Export Policy
1.6.2.6         Qtrees
1.6.2.7         Protocol Information Summary
1.6.2.7.1            NFS Services
1.6.2.7.1.1               NFS Options
1.6.2.7.1.2               NFS Volume Export
1.6.2.7.2            CIFS Services Summary
1.6.2.7.2.1               CIFS Service Configuration
1.6.2.7.2.2               CIFS Domain Controller
1.6.2.7.2.3               CIFS Local Group
1.6.2.7.2.4               CIFS Options
1.6.2.7.2.5               CIFS Share
1.6.2.7.3            S3 Services Configuration Summary
1.6.2.7.3.1               S3 Buckets
1.6.3      SAN Vserver Configuration
1.6.3.1         Root Volume
1.6.3.2         Volumes QoS Policy
1.6.3.2.1            Volumes Fixed QoS Policy
1.6.3.2.2            Volumes Adaptive QoS Policy
1.6.3.3         Storage Volumes
1.6.3.3.1            Per Volumes QoS Policy
1.6.3.4         Volumes Snapshot Configuration
1.6.3.4.1            HealthCheck - Volumes Snapshot
1.6.3.5         Protocol Information Summary
1.6.3.5.1            ISCSI Services
1.6.3.5.1.1               ISCSI Interfaces
1.6.3.5.2            FCP Services Summary
1.6.3.5.2.1               FCP Interface
1.6.3.5.2.2               FCP Physical Adapter
1.6.3.5.3            FCP/ISCSI Lun Storage
1.6.3.5.3.1               Igroup Mapping
1.6.3.5.3.2               HealthCheck - Non-Mapped Lun Information
1.7   Replication Summary
1.7.1      Cluster Peer
1.7.2      Vserver Peer
1.7.2.1         SnapMirror Relationship
1.7.2.1.1            SnapMirror Replication History
1.7.2.2         SnapMirror Destinations
1.7.2.3         Ontap Mediator
1.8   Efficiency Summary
1.8.1      Aggregate Total Efficiency
1.8.1.1         HealthCheck - Volume without deduplication enabled
1.8.1.2         NAS Vserver Volume Deduplication
1.8.1.2.1            Volume Efficiency
1.8.1.2.2            Detailed Volume Efficiency
1.8.1.3         NFS Vserver Volume Deduplication
1.8.1.3.1            Volume Efficiency
1.8.1.3.2            Detailed Volume Efficiency
1.8.1.4         SAN Vserver Volume Deduplication
1.8.1.4.1            Volume Efficiency
1.8.1.4.2            Detailed Volume Efficiency
1.9   Security Summary
1.9.1      NAS Vserver Local User
1.9.2      NFS Vserver Local User
1.9.3      SAN Vserver Local User
1.9.4      Vserver SSL Certificate
1.9.5      Key Management Service (KMS)
1.9.6      Aggregate Encryption (NAE)
1.9.6.1         Volume Encryption (NVE)
1.9.7      Snaplock Compliance Clock
1.9.7.1         Aggregate Snaplock Type
1.9.7.1.1            Volume Snaplock Type
1.9.7.1.1.1               Snaplock Volume Attributes
1.10   System Configuration Summary
1.10.1      System Image Configuration
1.10.2      System Web Service
1.10.3      DNS Configuration
1.10.4      Configuration Backup Setting
1.10.4.1         ZENPR-HQ-01 Configuration Backup Items
1.10.4.2         ZENPR-HQ-02 Configuration Backup Items
1.10.5      EMS Configuration
1.10.6      System Timezone Configuration
1.10.6.1         Network Time Protocol Configuration
1.10.6.1.1            Network Time Protocol Node Status Information
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1PHARMAX-HQ Cluster Report
1.1   Cluster Information
1.1.1      Cluster HA Status
1.1.2      Cluster AutoSupport Status
1.2   Node Information
1.2.1      Node Inventory
1.2.1.1         Node Vol0 Inventory
1.2.1.2         Node Hardware Inventory
1.3   Storage Information
1.3.1      Aggregate Inventory
1.3.1.1         Aggregate Spares
1.3.1.2         Aggregate Options
1.3.1.2.1            PHARMAX_HQ_01_SSD_1 Options
1.3.1.2.2            PHARMAX_HQ_02_SSD_1 Options
1.3.2      Disk Information
1.3.2.1         Per Node Disk Assignment
1.3.2.2         Disk Owned by Node PHARMAX-HQ-01
1.3.2.3         Disk Owned by Node PHARMAX-HQ-02
1.3.2.4         Disk Container Type
1.3.2.5         Disk Inventory
1.4   Licenses Information
1.4.1      PHARMAX-HQ-01 License Usage
1.4.2      PHARMAX-HQ-02 License Usage
1.4.3      License Features
1.5   Network Information
1.5.1      IPSpace
1.5.1.1         Network Ports
1.5.1.1.1            PHARMAX-HQ-01 Ports
1.5.1.1.2            PHARMAX-HQ-02 Ports
1.5.1.2         Network Link Aggregation Group
1.5.1.2.1            PHARMAX-HQ-01 IFGRP
1.5.1.2.2            PHARMAX-HQ-02 IFGRP
1.5.1.3         Network VLANs
1.5.1.3.1            PHARMAX-HQ-01 Vlans
1.5.1.3.2            PHARMAX-HQ-02 Vlans
1.5.1.4         Broadcast Domain
1.5.1.5         Failover Groups
1.5.1.6         Network Subnets
1.5.1.7         PHARMAX-HQ Vserver Routes
1.5.1.7.1            Network Interface Routes
1.5.1.8         CIFS Vserver Routes
1.5.1.8.1            Network Interface Routes
1.5.1.9         ISCSI Vserver Routes
1.5.1.9.1            Network Interface Routes
1.5.1.10         NFS Vserver Routes
1.5.1.10.1            Network Interface Routes
1.5.1.11         NVME Vserver Routes
1.5.1.11.1            Network Interface Routes
1.5.1.12         ObjectS3 Vserver Routes
1.5.1.12.1            Network Interface Routes
1.5.1.13         Network Interfaces
1.6   Vserver Information
1.6.1      CIFS Vserver Configuration
1.6.1.1         Root Volume
1.6.1.2         Volumes QoS Policy
1.6.1.2.1            Volumes Fixed QoS Policy
1.6.1.2.2            Volumes Adaptive QoS Policy
1.6.1.3         Storage Volumes
1.6.1.3.1            Per Volumes QoS Policy
1.6.1.3.2            FlexGroup Volumes
1.6.1.3.3            Flexclone Volumes
1.6.1.4         Volumes Snapshot Configuration
1.6.1.5         Qtrees
1.6.1.6         Volume Quota
1.6.1.7         Protocol Information
1.6.1.7.1            CIFS Services Information
1.6.2      FCSAN Vserver Configuration
1.6.2.1         Root Volume
1.6.2.2         Volumes QoS Policy
1.6.2.2.1            Volumes Fixed QoS Policy
1.6.2.2.2            Volumes Adaptive QoS Policy
1.6.2.3         Storage Volumes
1.6.2.3.1            Per Volumes QoS Policy
1.6.2.4         Protocol Information
1.6.2.4.1            FCP Services Information
1.6.2.4.2            Lun Storage
1.6.3      ISCSI Vserver Configuration
1.6.3.1         Root Volume
1.6.3.2         Volumes QoS Policy
1.6.3.2.1            Volumes Fixed QoS Policy
1.6.3.2.2            Volumes Adaptive QoS Policy
1.6.3.3         Storage Volumes
1.6.3.3.1            Per Volumes QoS Policy
1.6.3.4         Volumes Snapshot Configuration
1.6.3.5         Protocol Information
1.6.3.5.1            ISCSI Services
1.6.3.5.2            Lun Storage
1.6.3.5.3            Consistency Groups
1.6.4      NFS Vserver Configuration
1.6.4.1         Root Volume
1.6.4.2         Volumes QoS Policy
1.6.4.2.1            Volumes Fixed QoS Policy
1.6.4.2.2            Volumes Adaptive QoS Policy
1.6.4.3         Storage Volumes
1.6.4.3.1            Per Volumes QoS Policy
1.6.4.3.2            FlexGroup Volumes
1.6.4.4         Volumes Snapshot Configuration
1.6.4.5         Export Policy
1.6.4.6         Protocol Information
1.6.4.6.1            NFS Services
1.6.5      NVME Vserver Configuration
1.6.5.1         Root Volume
1.6.5.2         Volumes QoS Policy
1.6.5.2.1            Volumes Fixed QoS Policy
1.6.5.2.2            Volumes Adaptive QoS Policy
1.6.5.3         Storage Volumes
1.6.5.3.1            Per Volumes QoS Policy
1.6.5.4         Volumes Snapshot Configuration
1.6.5.5         Protocol Information
1.6.5.5.1            Nvme Services Information
1.6.5.5.2            Namespace Storage
1.6.5.5.3            Consistency Groups
1.6.6      ObjectS3 Vserver Configuration
1.6.6.1         Root Volume
1.6.6.2         Volumes QoS Policy
1.6.6.2.1            Volumes Fixed QoS Policy
1.6.6.2.2            Volumes Adaptive QoS Policy
1.6.6.3         Storage Volumes
1.6.6.3.1            FlexGroup Volumes
1.6.6.4         Qtrees
1.6.6.5         Protocol Information
1.6.6.5.1            S3 Services Configuration Information
1.7   Replication Information
1.7.1      Cluster Peer
1.7.2      Vserver Peer
1.7.2.1         SnapMirror Destinations
1.8   Efficiency Information
1.8.1      Aggregate Total Efficiency
1.8.1.1         HealthCheck - Volume with Disabled Deduplication
1.8.1.2         CIFS Vserver Volume Deduplication
1.8.1.2.1            Volume Efficiency
1.8.1.2.2            Detailed Volume Efficiency
1.8.1.3         FCSAN Vserver Volume Deduplication
1.8.1.3.1            Volume Efficiency
1.8.1.3.2            Detailed Volume Efficiency
1.8.1.4         ISCSI Vserver Volume Deduplication
1.8.1.4.1            Volume Efficiency
1.8.1.4.2            Detailed Volume Efficiency
1.8.1.5         NFS Vserver Volume Deduplication
1.8.1.5.1            Volume Efficiency
1.8.1.5.2            Detailed Volume Efficiency
1.8.1.6         NVME Vserver Volume Deduplication
1.8.1.6.1            Volume Efficiency
1.8.1.6.2            Detailed Volume Efficiency
1.8.1.7         ObjectS3 Vserver Volume Deduplication
1.8.1.7.1            Volume Efficiency
1.8.1.7.2            Detailed Volume Efficiency
1.9   Security Information
1.9.1      PHARMAX-HQ Vserver Local User
1.9.2      CIFS Vserver Local User
1.9.3      FCSAN Vserver Local User
1.9.4      ISCSI Vserver Local User
1.9.5      NFS Vserver Local User
1.9.6      NVME Vserver Local User
1.9.7      ObjectS3 Vserver Local User
1.9.8      Vserver SSL Certificate
1.9.8.1         Vserver SSL Certificate Details
1.9.9      Key Management Service (KMS)
1.9.10      Aggregate Encryption (NAE)
1.9.10.1         Volume Encryption (NVE)
1.9.11      Snaplock Compliance Clock
1.9.11.1         Aggregate Snaplock Type
1.9.11.1.1            Volume Snaplock Type
1.10   System Configuration Information
1.10.1      System Image Configuration
1.10.2      System Web Service
1.10.3      DNS Configuration
1.10.4      Configuration Backup Setting
1.10.4.1         PHARMAX-HQ-01 Configuration
1.10.4.2         PHARMAX-HQ-02 Configuration
1.10.5      EMS Configuration
1.10.5.1         Audit Settings
1.10.5.2         PHARMAX-HQ-01 Emergency and Alert Messages
1.10.5.3         PHARMAX-HQ-02 Emergency and Alert Messages
1.10.6      System Timezone Configuration

-
NetApp ONTAP As Built Report - v1.0

1 ZENPR-HQ Cluster Report

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

1.1 Cluster Information

+
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 Cluster Information

- - + + - - - + + + - - + +
Cluster NameZENPR-HQ
Cluster UUID7b2309fb-5e00-11e8-b65d-005056b06330
Cluster NamePHARMAX-HQ
Cluster UUID761f4e9a-532a-11ef-8cf8-005056b04618
Cluster Serial1-80-000011
Cluster Controller192.168.7.60
Cluster ContactJonathan Colon
Cluster LocationHOMELAB
Ontap VersionNetApp Release 9.10.1RC1: Wed Oct 27 02:46:19 UTC 2021
Cluster Contact-
Cluster LocationHQ DC
Ontap VersionNetApp Release 9.15.1: Thu Jul 04 07:17:54 UTC 2024
Number of Aggregates4
Number of Volumes30
Overall System HealthOK
Number of Volumes31
Overall System HealthOK
-
Table 1 - Cluster Information - ZENPR-HQ

-

1.1.1 Cluster HA Status

The following section provides a summary of the Cluster HA Status on ZENPR-HQ.

+
Table 1 - Cluster Information - PHARMAX-HQ

+

1.1.1 Cluster HA Status

- - + +
NamePartnerTakeOver PossibleTakeOver StateHA ModeHA State
ZENPR-HQ-01ZENPR-HQ-02Yesnot_in_takeoverHACONNECTED
ZENPR-HQ-02ZENPR-HQ-01Yesnot_in_takeoverHACONNECTED
PHARMAX-HQ-01PHARMAX-HQ-02Yesnot_in_takeoverHACONNECTED
PHARMAX-HQ-02PHARMAX-HQ-01Yesnot_in_takeoverHACONNECTED
-
Table 2 - Cluster HA Status - ZENPR-HQ

-

1.1.2 Cluster AutoSupport Status

The following section provides a summary of the Cluster AutoSupport Status on ZENPR-HQ.

+
Table 2 - Cluster HA Status - PHARMAX-HQ

+

1.1.2 Cluster AutoSupport Status

- + - - + +
Node NameZENPR-HQ-01
Node NamePHARMAX-HQ-01
Protocolhttps
EnabledNo
Last Time Stamp11/24/2021 11:45:56
EnabledYes
Last Time Stamp08/08/2024 21:17:54
Last SubjectMANAGEMENT_LOG
-
+
Table 3 - Cluster AutoSupport Status - PHARMAX-HQ-01

- + - - + +
Node NameZENPR-HQ-02
Node NamePHARMAX-HQ-02
Protocolhttps
EnabledNo
Last Time Stamp11/24/2021 11:46:03
EnabledYes
Last Time Stamp08/08/2024 21:18:21
Last SubjectMANAGEMENT_LOG
-
-

1.2 Node Summary

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

1.2.1 Node Inventory

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

+
Table 4 - Cluster AutoSupport Status - PHARMAX-HQ-02

+

1.2 Node Information

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

1.2.1 Node Inventory

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

- - + +
NameModelIdSerialUptime
ZENPR-HQ-01SIMBOXXXXXXXXXXXXXXXXXXXXX08:18:36
ZENPR-HQ-02SIMBOXXXXXXXXXXXXXXXXXXXXX08:18:31
PHARMAX-HQ-01SIMBOX408235820700000000007007:05:20
PHARMAX-HQ-02SIMBOX408235820800000000007107:05:19
-
Table 3 - Node Information - ZENPR-HQ

-

1.2.1.1 Node Vol0 Inventory

The following section provides the node vol0 inventory on ZENPR-HQ.

+
Table 5 - Nodes - PHARMAX-HQ

+

1.2.1.1 Node Vol0 Inventory

- - + +
NodeAggregateVolumeCapacityAvailableUsed
ZENPR-HQ-01aggr0_PHARMAX_HQ_01vol022 GB11 GB44%
ZENPR-HQ-02aggr0_PHARMAX_HQ_02vol022 GB12 GB43%
PHARMAX-HQ-01aggr0_PHARMAX_HQ_01vol011 GB6 GB43%
PHARMAX-HQ-02aggr0_PHARMAX_HQ_02vol011 GB6 GB41%
-
Table 4 - Node Storage Information - ZENPR-HQ

-

1.2.1.2 Node Hardware Inventory

The following section provides the node hardware inventory on ZENPR-HQ.

+
Table 6 - Node Storage - PHARMAX-HQ

+

1.2.1.2 Node Hardware Inventory

- + - + @@ -288,16 +302,16 @@
NameZENPR-HQ-01
NamePHARMAX-HQ-01
System TypeSIMBOX
CPU Count2
Total Memory8GB
VendorNetApp
AFF/FASFAS
All Flash OptimizedYes
All Flash OptimizedNo
EpsilonNo
System HealthyHealthy
Failed Fan Count0
Over TemperatureNormal Temperature
NVRAM Battery Healthybattery_ok
-
+
Table 7 - Node Hardware - PHARMAX-HQ-01

- + - + @@ -307,22 +321,29 @@
NameZENPR-HQ-02
NamePHARMAX-HQ-02
System TypeSIMBOX
CPU Count2
Total Memory8GB
VendorNetApp
AFF/FASFAS
All Flash OptimizedYes
All Flash OptimizedNo
EpsilonNo
System HealthyHealthy
Failed Fan Count0
Over TemperatureNormal Temperature
NVRAM Battery Healthybattery_ok
-
-

1.3 Storage Summary

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

1.3.1 Aggregate Inventory

The following section provides the Aggregates on ZENPR-HQ.

+
Table 8 - Node Hardware - PHARMAX-HQ-02

+

1.3 Storage Information

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

1.3.1 Aggregate Inventory

The following section provides the Aggregates on PHARMAX-HQ.

- - - - -
NameCapacityAvailableUsedDisk CountRootRaid TypeState
aggr0_PHARMAX_HQ_0123 GB1 GB95%10YesRAID_DPonline
aggr0_PHARMAX_HQ_0223 GB1 GB95%10YesRAID_DPonline
PHARMAX_HQ_01_SSD_1219 GB179 GB18%23NoRAID_DPonline
PHARMAX_HQ_02_SSD_1219 GB219 GB0%23NoRAID_DPonline
-
Table 5 - Aggregates - ZENPR-HQ

-

1.3.1.1 Aggregate Options

The following section provides the Aggregates Options on ZENPR-HQ.

1.3.1.1.1 PHARMAX_HQ_01_SSD_1 Options
The following section provides the Aggregates Options on PHARMAX_HQ_01_SSD_1.

+ + + + +
aggr0_PHARMAX_HQ_0111 GB729 MB94%11YesRAID4online
aggr0_PHARMAX_HQ_0211 GB729 MB94%11YesRAID4online
PHARMAX_HQ_01_SSD_187 GB53 GB39%23NoRAID_DPonline
PHARMAX_HQ_02_SSD_187 GB32 GB63%23NoRAID_DPonline
+
Table 9 - Aggregates - PHARMAX-HQ

+

1.3.1.1 Aggregate Spares

+ + + + +
NameCapacityRoot UsableData UsableShared DiskDisk ZeroedOwner
VMw-1.111 GB1 GB-YesYesPHARMAX-HQ-01
VMw-1.1311 GB-5 GBYesYesPHARMAX-HQ-01
VMw-1.1311 GB1 GB5 GBYesYesPHARMAX-HQ-02
+
Table 10 - Aggregates Spares - PHARMAX-HQ

+

1.3.1.2 Aggregate Options

1.3.1.2.1 PHARMAX_HQ_01_SSD_1 Options
- - + + @@ -331,7 +352,7 @@ - + @@ -347,8 +368,8 @@
azcs_read_optimizationOff
dir_holesNo
dlog_hole_reserveOff
enable_cold_data_reporting-
encrypt_with_aggr_keyNo
enable_cold_data_reportingNo
encrypt_with_aggr_keyYes
free_space_reallocOff
fs_size_fixedOff
ha_policySfo
logical_space_enforcementNo
logical_space_reportingNo
max_write_alloc_blocks0
nearly_full_threshold95
nearly_full_threshold93
no_delete_logOff
no_i2pOff
nosnapOn
stripingNot_Striped
thorough_scrubOff
-
Table 6 - Aggregates Options - PHARMAX_HQ_01_SSD_1

-
1.3.1.1.2 PHARMAX_HQ_02_SSD_1 Options
The following section provides the Aggregates Options on PHARMAX_HQ_02_SSD_1.

+
Table 11 - Aggregates Options - PHARMAX_HQ_01_SSD_1

+
1.3.1.2.2 PHARMAX_HQ_02_SSD_1 Options
@@ -363,7 +384,7 @@ - + @@ -379,127 +400,123 @@
azcs_read_optimizationOff
dir_holesNo
logical_space_enforcementNo
logical_space_reportingNo
max_write_alloc_blocks0
nearly_full_threshold95
nearly_full_threshold93
no_delete_logOff
no_i2pOff
nosnapOn
stripingNot_Striped
thorough_scrubOff
-
Table 7 - Aggregates Options - PHARMAX_HQ_02_SSD_1

-

1.3.1.2 FabricPool

The following section provides the FabricPool information on ZENPR-HQ.

- - -
AggregateFabric Pool NameTypeUsed SpaceStatus
PHARMAX_HQ_01_SSD_1ontap_s3_640ontap_s32.5 GBunavailable
-
Table 8 - Aggregate FabriPool Information - ZENPR-HQ

-
1.3.1.2.1 FabriPool Object Store Configuration
The following section provides the FabriPool Object Store Configuration on ZENPR-HQ.

- - - - - - - - -
Object Store Nameontap_s3_640
S3 Namefabripool
Server FQDNSAN-DR-FabricPool.zenpr.local
Port443
SSL EnabledYes
Provider Typeontap_s3
Used Space2.5 GB
-
Table 9 - Aggregate FabriPool Object Store Configuration - ZENPR-HQ

-

1.3.2 Disk Summary

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

1.3.2.1 Per Node Disk Assignment

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

+
Table 12 - Aggregates Options - PHARMAX_HQ_02_SSD_1

+

1.3.2 Disk Information

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

1.3.2.1 Per Node Disk Assignment

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

- - + +
NodeDisk Count
ZENPR-HQ-0112
ZENPR-HQ-0212
PHARMAX-HQ-0112
PHARMAX-HQ-0212
-
Table 10 - Assigned Disk - ZENPR-HQ

-

1.3.2.2 Disk Owned by Node ZENPR-HQ-01

The following section provides the inventory of disks owned by each controller on ZENPR-HQ.

+
Table 13 - Assigned Disk - PHARMAX-HQ

+

1.3.2.2 Disk Owned by Node PHARMAX-HQ-01

- - - - - - - - - - - - -
DiskOwner IdHomeHome IdType
VMw-1.14053517983ZENPR-HQ-014053517983SSD
VMw-1.104053517983ZENPR-HQ-014053517983SSD
VMw-1.114053517983ZENPR-HQ-014053517983SSD
VMw-1.124053517983ZENPR-HQ-014053517983SSD
VMw-1.24053517983ZENPR-HQ-014053517983SSD
VMw-1.34053517983ZENPR-HQ-014053517983SSD
VMw-1.44053517983ZENPR-HQ-014053517983SSD
VMw-1.54053517983ZENPR-HQ-014053517983SSD
VMw-1.64053517983ZENPR-HQ-014053517983SSD
VMw-1.74053517983ZENPR-HQ-014053517983SSD
VMw-1.84053517983ZENPR-HQ-014053517983SSD
VMw-1.94053517983ZENPR-HQ-014053517983SSD
-
Table 11 - Node Disk Owner - ZENPR-HQ-01

-

1.3.2.3 Disk Owned by Node ZENPR-HQ-02

The following section provides the inventory of disks owned by each controller on ZENPR-HQ.

+ + + + + + + + + + + + +
VMw-1.14082358207PHARMAX-HQ-014082358207SSD
VMw-1.104082358207PHARMAX-HQ-014082358207SSD
VMw-1.114082358207PHARMAX-HQ-014082358207SSD
VMw-1.124082358207PHARMAX-HQ-014082358207SSD
VMw-1.24082358207PHARMAX-HQ-014082358207SSD
VMw-1.34082358207PHARMAX-HQ-014082358207SSD
VMw-1.44082358207PHARMAX-HQ-014082358207SSD
VMw-1.54082358207PHARMAX-HQ-014082358207SSD
VMw-1.64082358207PHARMAX-HQ-014082358207SSD
VMw-1.74082358207PHARMAX-HQ-014082358207SSD
VMw-1.84082358207PHARMAX-HQ-014082358207SSD
VMw-1.94082358207PHARMAX-HQ-014082358207SSD
+
Table 14 - Node Disk Owner - PHARMAX-HQ-01

+

1.3.2.3 Disk Owned by Node PHARMAX-HQ-02

- - - - - - - - - - - - -
DiskOwner IdHomeHome IdType
VMw-1.134053517984ZENPR-HQ-024053517984SSD
VMw-1.144053517984ZENPR-HQ-024053517984SSD
VMw-1.154053517984ZENPR-HQ-024053517984SSD
VMw-1.164053517984ZENPR-HQ-024053517984SSD
VMw-1.174053517984ZENPR-HQ-024053517984SSD
VMw-1.184053517984ZENPR-HQ-024053517984SSD
VMw-1.194053517984ZENPR-HQ-024053517984SSD
VMw-1.204053517984ZENPR-HQ-024053517984SSD
VMw-1.214053517984ZENPR-HQ-024053517984SSD
VMw-1.224053517984ZENPR-HQ-024053517984SSD
VMw-1.234053517984ZENPR-HQ-024053517984SSD
VMw-1.244053517984ZENPR-HQ-024053517984SSD
-
Table 12 - Node Disk Owner - ZENPR-HQ-02

-

1.3.2.4 Disk Container Type

The following section provides a summary of disk status on ZENPR-HQ.

+ + + + + + + + + + + + +
VMw-1.134082358208PHARMAX-HQ-024082358208SSD
VMw-1.144082358208PHARMAX-HQ-024082358208SSD
VMw-1.154082358208PHARMAX-HQ-024082358208SSD
VMw-1.164082358208PHARMAX-HQ-024082358208SSD
VMw-1.174082358208PHARMAX-HQ-024082358208SSD
VMw-1.184082358208PHARMAX-HQ-024082358208SSD
VMw-1.194082358208PHARMAX-HQ-024082358208SSD
VMw-1.204082358208PHARMAX-HQ-024082358208SSD
VMw-1.214082358208PHARMAX-HQ-024082358208SSD
VMw-1.224082358208PHARMAX-HQ-024082358208SSD
VMw-1.234082358208PHARMAX-HQ-024082358208SSD
VMw-1.244082358208PHARMAX-HQ-024082358208SSD
+
Table 15 - Node Disk Owner - PHARMAX-HQ-02

+

1.3.2.4 Disk Container Type

ContainerDisk Count
shared24
-
Table 13 - Disk Container Type - ZENPR-HQ

-

1.3.2.5 Disk Inventory

The following section provides the Disks installed on ZENPR-HQ.

+
Table 16 - Disk Container Type - PHARMAX-HQ

+

1.3.2.5 Disk Inventory

- - - - - - - - - - - - - - - - - - - - - - - - -
Disk NameShelfBayCapacityModelSerial NumberType
VMw-1.1 032GVirtualdisk6000c29333280b56d5c27a7098e29ef6SSD
VMw-1.10 1032GVirtualdisk6000c296f238575261e4baa3ce93ec8aSSD
VMw-1.11 1132GVirtualdisk6000c29e990640f7d2d324ea42a51c23SSD
VMw-1.12 1232GVirtualdisk6000c29112f479dfdb379b7622a7ba51SSD
VMw-1.13 132GVirtualdisk6000c29b787dfcd1c175698fd4c44e53SSD
VMw-1.14 232GVirtualdisk6000c291e604285bac7f1f2d419a1b8bSSD
VMw-1.15 332GVirtualdisk6000c2973ddcdfa7ccb4b67b5878440cSSD
VMw-1.16 432GVirtualdisk6000c29b28ce6d68ce6731ceeb066324SSD
VMw-1.17 532GVirtualdisk6000c29f40f5a1abd43e3a644dd6b47bSSD
VMw-1.18 632GVirtualdisk6000c298160773b8171a0861dea193c9SSD
VMw-1.19 832GVirtualdisk6000c29e10d0745228af695be3f2569dSSD
VMw-1.2 132GVirtualdisk6000c29ed112236d8850fd47a9f067a0SSD
VMw-1.20 932GVirtualdisk6000c2947e7e6e5c552105e7f4ec90ccSSD
VMw-1.21 1032GVirtualdisk6000c29108ae90cad6b3cc4a26979093SSD
VMw-1.22 1132GVirtualdisk6000c29d6f64c19e118e3c8e8a179048SSD
VMw-1.23 1232GVirtualdisk6000c291945748e4fa9491b7947ea708SSD
VMw-1.24 032GVirtualdisk6000c2952334616428d01733485e79d4SSD
VMw-1.3 232GVirtualdisk6000c291a7999b31ba2823711b9e4508SSD
VMw-1.4 332GVirtualdisk6000c29d10028522c2170a943cb56d53SSD
VMw-1.5 432GVirtualdisk6000c298cfb88633f50272b59d8f3a09SSD
VMw-1.6 532GVirtualdisk6000c297990d22df3eeea8c396bba604SSD
VMw-1.7 632GVirtualdisk6000c2983c651dcb5ce1417ef299908aSSD
VMw-1.8 832GVirtualdisk6000c293184669a73dad9026b40d904cSSD
VMw-1.9 932GVirtualdisk6000c297877ab0bd88bc0daff51dc92fSSD
-
Table 14 - Disk Inventory - ZENPR-HQ

-

1.4 Licenses Summary

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

1.4.1 ZENPR-HQ-01 License Usage

The following section provides per node installed licenses on ZENPR-HQ.

+ + + + + + + + + + + + + + + + + + + + + + + + +
VMw-1.1 013GVirtualdisk6000c29544acd8171fe0b61875f556fdSSD
VMw-1.10 1013GVirtualdisk6000c2918b22b2fe077c628cc8b28992SSD
VMw-1.11 1113GVirtualdisk6000c2948c5824f7fc11d2b5ba0548cfSSD
VMw-1.12 1213GVirtualdisk6000c29483569e0305ffd84c3a511875SSD
VMw-1.13 013GVirtualdisk6000c2960d3f17b721ffc4564d0a6751SSD
VMw-1.14 113GVirtualdisk6000c299486c3f68003c7b3cdf1fbdcbSSD
VMw-1.15 213GVirtualdisk6000c29105b368e05e7ba007b6d43360SSD
VMw-1.16 313GVirtualdisk6000c29c9b3e2882c4f314fabcdaca91SSD
VMw-1.17 413GVirtualdisk6000c29ef09a9180e0b669e2526ce6b6SSD
VMw-1.18 513GVirtualdisk6000c29ddc80d9f546f282d46ad2f96bSSD
VMw-1.19 613GVirtualdisk6000c29787c8f6b77bf8df5e9966eb0cSSD
VMw-1.2 113GVirtualdisk6000c2979523379efc2eb41e3d01a122SSD
VMw-1.20 813GVirtualdisk6000c29a2d1b70aad55ce7cbb7a3c51bSSD
VMw-1.21 913GVirtualdisk6000c296b1faa29e4ae9bc024ebd9d58SSD
VMw-1.22 1013GVirtualdisk6000c29d95860fbfb6e30bd823748f7bSSD
VMw-1.23 1113GVirtualdisk6000c291b734982ea0702425d498372bSSD
VMw-1.24 1213GVirtualdisk6000c296d0368a2a7aa66ee3e5692021SSD
VMw-1.3 213GVirtualdisk6000c290c534a3ac8f6dcf7e2b9eaaf3SSD
VMw-1.4 313GVirtualdisk6000c29ae58c3028f2a06b3728754d18SSD
VMw-1.5 413GVirtualdisk6000c299bdb2a58a9a345259272192baSSD
VMw-1.6 513GVirtualdisk6000c2978994c39cd2bb6db35d785d1dSSD
VMw-1.7 613GVirtualdisk6000c29763ad9cc99ff00acaff23f798SSD
VMw-1.8 813GVirtualdisk6000c29a85f8ae8e0643be3adc189ec2SSD
VMw-1.9 913GVirtualdisk6000c290999c21d9c692c22c6ae9d989SSD
+
Table 17 - Disk Inventory - PHARMAX-HQ

+

1.4 Licenses Information

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

1.4.1 PHARMAX-HQ-01 License Usage

- - - - - - - - - - - - -
LicenseTypeDescriptionRisk
CifsLicenseCIFS Licenselow
FcpLicenseFCP Licenselow
FlexcloneLicenseFlexClone Licenselow
IscsiLicenseiSCSI Licenselow
NfsLicenseNFS Licenselow
SnaplockLicenseSnapLock Licenselow
SnapmanagersuiteLicenseSnapManagerSuite Licenselow
SnapmirrorLicenseSnapMirror Licenselow
SnaprestoreLicenseSnapRestore Licenselow
SnapvaultLicenseSnapVault Licenselow
TpmLicenseTrusted Platform Module License-
VeLicenseVolume Encryption License-
-
Table 15 - License Usage - ZENPR-HQ-01

-

1.4.2 ZENPR-HQ-02 License Usage

The following section provides per node installed licenses on ZENPR-HQ.

+ + + + + + + + + + + + + + + + + + +
Anti_RansomwareEnabledAutonomous Ransomware Protection License-
CifsEnabledCIFS Licenselow
FcpEnabledFCP Licenselow
FlexcloneEnabledFlexClone Licenselow
IscsiEnablediSCSI Licenselow
Mt_Ek_MgmtEnabledMulti-tenant Encryption Key Management Licenselow
NfsEnabledNFS Licenselow
Nvme_OfEnabledNVMe-oF License-
S3EnabledS3 Licenselow
S3_SnapmirrorEnabledS3 SnapMirror License-
SnaplockEnabledSnapLock Licenselow
SnapmanagersuiteEnabledSnapCenter Licenselow
SnapmirrorEnabledSnapMirror Licenselow
Snapmirror_SyncEnabledSnapMirror Synchronous License-
SnaprestoreEnabledSnapRestore Licenselow
SnapvaultEnabledSnapVault Licenselow
TpmEnabledTrusted Platform Module License-
VeEnabledVolume Encryption License-
+
Table 18 - License Usage - PHARMAX-HQ-01

+

1.4.2 PHARMAX-HQ-02 License Usage

- - - - - - - - - - - - -
LicenseTypeDescriptionRisk
CifsLicenseCIFS Licenselow
FcpLicenseFCP Licenselow
FlexcloneLicenseFlexClone Licenselow
IscsiLicenseiSCSI Licenselow
NfsLicenseNFS Licenselow
SnaplockLicenseSnapLock Licenselow
SnapmanagersuiteLicenseSnapManagerSuite Licenselow
SnapmirrorLicenseSnapMirror Licenselow
SnaprestoreLicenseSnapRestore Licenselow
SnapvaultLicenseSnapVault Licenselow
TpmLicenseTrusted Platform Module License-
VeLicenseVolume Encryption License-
-
Table 16 - License Usage - ZENPR-HQ-02

-

1.4.3 License Features

The following section provides the License Features Usage on ZENPR-HQ.

+ + + + + + + + + + + + + + + + + + +
Anti_RansomwareEnabledAutonomous Ransomware Protection License-
CifsEnabledCIFS Licenselow
FcpEnabledFCP Licenselow
FlexcloneEnabledFlexClone Licenselow
IscsiEnablediSCSI Licenselow
Mt_Ek_MgmtEnabledMulti-tenant Encryption Key Management Licenselow
NfsEnabledNFS Licenselow
Nvme_OfEnabledNVMe-oF License-
S3EnabledS3 Licenselow
S3_SnapmirrorEnabledS3 SnapMirror License-
SnaplockEnabledSnapLock Licenselow
SnapmanagersuiteEnabledSnapCenter Licenselow
SnapmirrorEnabledSnapMirror Licenselow
Snapmirror_SyncEnabledSnapMirror Synchronous License-
SnaprestoreEnabledSnapRestore Licenselow
SnapvaultEnabledSnapVault Licenselow
TpmEnabledTrusted Platform Module License-
VeEnabledVolume Encryption License-
+
Table 19 - License Usage - PHARMAX-HQ-02

+

1.4.3 License Features

@@ -508,7 +525,7 @@ - + @@ -529,487 +546,398 @@
NameStatusNotes
cifsavailableNone
compressiononNone
flexcacheonNone
flexcloneavailableNone
iscsiavailableNone
mt_ek_mgmtnot_availableFeature not licensed and disabled
mt_ek_mgmtoffFeature licensed but disabled
multistorenot_availableFeature not supported
ndmponNone
nfsavailableNone
syncmirroronNone
v_storageattachnot_availableFeature not licensed
-
Table 17 - License Feature - ZENPR-HQ

-

1.5 Network Summary

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

1.5.1 IPSpace

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

+
Table 20 - License Feature - PHARMAX-HQ

+

1.5 Network Information

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

1.5.1 IPSpace

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

- +
NameCluster
SVMCluster
PortsZENPR-HQ-01:e0a; ZENPR-HQ-01:e0b; ZENPR-HQ-02:e0a; ZENPR-HQ-02:e0b
PortsPHARMAX-HQ-02:e0a; PHARMAX-HQ-02:e0b; PHARMAX-HQ-01:e0a; PHARMAX-HQ-01:e0b
Broadcast DomainsCluster
-
+
Table 21 - Network IPSpace - Cluster

- - - + + +
NameDefault
SVMNAS; NFS; ZENPR-HQ; SAN
PortsZENPR-HQ-01:a0a; ZENPR-HQ-01:a0a-11; ZENPR-HQ-01:a0a-12; ZENPR-HQ-01:a0a-5; ZENPR-HQ-01:a0a-6; ZENPR-HQ-01:e0c; ZENPR-HQ-01:e0d; ZENPR-HQ-01:e0e; ZENPR-HQ-01:e0f; ZENPR-HQ-01:e0g; ZENPR-HQ-02:a0a; ZENPR-HQ-02:a0a-11; ZENPR-HQ-02:a0a-12; ZENPR-HQ-02:a0a-5; ZENPR-HQ-02:a0a-6; ZENPR-HQ-02:e0c; ZENPR-HQ-02:e0d; ZENPR-HQ-02:e0e; ZENPR-HQ-02:e0f; ZENPR-HQ-02:e0g
Broadcast DomainsDefault-1; Default-2; ISCSI-A; ISCSI-B; MANAGEMENT; Replication; VLAN5-MANAGEMENT
SVMISCSI; NVME; CIFS; FCSAN; ObjectS3; NFS; 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; FileProtocol-5; ISCSI-A-6; ISCSI-B-12; Management-7; Replication-11
-
-

1.5.1.1 Network Ports

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

1.5.1.1.1 ZENPR-HQ-01 Ports
The following section provides per node network ports on ZENPR-HQ-01.

+
Table 22 - Network IPSpace - Default

+

1.5.1.1 Network Ports

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

1.5.1.1.1 PHARMAX-HQ-01 Ports
- - - - - - - -
Port NameRoleMac AddressMTULink StatusAdmin Status
e0aCluster00:50:56:b0:73:f89000UpUp
e0bCluster00:50:56:b0:bc:ba9000UpUp
e0cNode_Mgmt00:50:56:b0:1e:0e1500UpUp
e0dData02:50:56:b0:73:f81500UpUp
e0eData02:50:56:b0:73:f81500UpUp
e0fData02:50:56:b0:73:f81500UpUp
e0gData02:50:56:b0:73:f81500UpUp
-
Table 18 - Physical Port Information - ZENPR-HQ-01

-
1.5.1.1.2 ZENPR-HQ-02 Ports
The following section provides per node network ports on ZENPR-HQ-02.

+ + + + +
e0aCluster00:50:56:b0:46:189000UpUp
e0bCluster00:50:56:b0:6b:d39000UpUp
e0cNode_Mgmt02:50:56:b0:46:189000UpUp
e0dData02:50:56:b0:46:189000UpUp
+
Table 23 - Physical Port - PHARMAX-HQ-01

+
1.5.1.1.2 PHARMAX-HQ-02 Ports
- - - - - - - -
Port NameRoleMac AddressMTULink StatusAdmin Status
e0aCluster00:50:56:b0:8a:179000UpUp
e0bCluster00:50:56:b0:76:ac9000UpUp
e0cNode_Mgmt00:50:56:b0:04:231500UpUp
e0dData02:50:56:b0:8a:171500UpUp
e0eData02:50:56:b0:8a:171500UpUp
e0fData02:50:56:b0:8a:171500UpUp
e0gData02:50:56:b0:8a:171500UpUp
-
Table 19 - Physical Port Information - ZENPR-HQ-02

-

1.5.1.2 Network Link Aggregation Group

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

1.5.1.2.1 ZENPR-HQ-01 IFGRP
The following section provides per Node IFGRP Aggregated Ports on ZENPR-HQ-01.

+ + + + +
e0aCluster00:50:56:b0:03:d39000UpUp
e0bCluster00:50:56:b0:ad:c59000UpUp
e0cNode_Mgmt02:50:56:b0:03:d39000UpUp
e0dData02:50:56:b0:03:d39000UpUp
+
Table 24 - Physical Port - PHARMAX-HQ-02

+

1.5.1.2 Network Link Aggregation Group

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

1.5.1.2.1 PHARMAX-HQ-01 IFGRP
- +
Port NameDistribution FunctionModePortMac AddressPort Participation
a0aipmultimodee0d e0e e0f e0g02:50:56:b0:73:f8full
a0aipmultimodee0c e0d02:50:56:b0:46:18full
-
Table 20 - Link Aggregation Group Information - ZENPR-HQ-01

-
1.5.1.2.2 ZENPR-HQ-02 IFGRP
The following section provides per Node IFGRP Aggregated Ports on ZENPR-HQ-02.

+
Table 25 - Link Aggregation Group - PHARMAX-HQ-01

+
1.5.1.2.2 PHARMAX-HQ-02 IFGRP
- +
Port NameDistribution FunctionModePortMac AddressPort Participation
a0aipmultimodee0d e0e e0f e0g02:50:56:b0:8a:17full
a0aipmultimodee0c e0d02:50:56:b0:03:d3full
-
Table 21 - Link Aggregation Group Information - ZENPR-HQ-02

-

1.5.1.3 Network VLANs

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

1.5.1.3.1 ZENPR-HQ-01 Vlans
The following section provides per node VLAN information on ZENPR-HQ-01.

+
Table 26 - Link Aggregation Group - PHARMAX-HQ-02

+

1.5.1.3 Network VLANs

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

1.5.1.3.1 PHARMAX-HQ-01 Vlans
+
Interface NameParent InterfaceVlan ID
a0a-11a0a11
a0a-12a0a12
a0a-5a0a5
a0a-6a0a6
a0a-7a0a7
-
Table 22 - Network VLAN Information - ZENPR-HQ-01

-
1.5.1.3.2 ZENPR-HQ-02 Vlans
The following section provides per node VLAN information on ZENPR-HQ-02.

+
Table 27 - Network VLAN - PHARMAX-HQ-01

+
1.5.1.3.2 PHARMAX-HQ-02 Vlans
+
Interface NameParent InterfaceVlan ID
a0a-11a0a11
a0a-12a0a12
a0a-5a0a5
a0a-6a0a6
a0a-7a0a7
-
Table 23 - Network VLAN Information - ZENPR-HQ-02

-

1.5.1.4 Broadcast Domain

The following section provides the Broadcast Domain information on ZENPR-HQ.

+
Table 28 - Network VLAN - PHARMAX-HQ-02

+

1.5.1.4 Broadcast Domain

- - - - - - - - -
NameIPSpaceFailover GroupsMTUPorts
ClusterClusterCluster9000ZENPR-HQ-01:e0a
ZENPR-HQ-01:e0b
ZENPR-HQ-02:e0a
ZENPR-HQ-02:e0b
Default-1DefaultDefault-11500ZENPR-HQ-01:a0a
Default-2DefaultDefault-21500ZENPR-HQ-02:a0a
ISCSI-ADefaultISCSI-A1500ZENPR-HQ-01:a0a-6
ZENPR-HQ-02:a0a-6
ISCSI-BDefaultISCSI-B1500ZENPR-HQ-01:a0a-12
ZENPR-HQ-02:a0a-12
MANAGEMENTDefaultMANAGEMENT1500ZENPR-HQ-01:e0c
ZENPR-HQ-02:e0c
ReplicationDefaultReplication1500ZENPR-HQ-01:a0a-11
ZENPR-HQ-02:a0a-11
VLAN5-MANAGEMENTDefaultVLAN5-MANAGEMENT1500ZENPR-HQ-01:a0a-5
ZENPR-HQ-02:a0a-5
-
Table 24 - Network Broadcast Domain Information - ZENPR-HQ

-

1.5.1.5 Failover Groups

The following section provides the Failover Group information on ZENPR-HQ.

+ + + + + + + + +
ClusterClusterCluster9000PHARMAX-HQ-02:e0a
PHARMAX-HQ-02:e0b
PHARMAX-HQ-01:e0a
PHARMAX-HQ-01:e0b
DefaultDefault 1500 
Default-1DefaultDefault-19000PHARMAX-HQ-02:a0a
PHARMAX-HQ-01:a0a
FileProtocol-5DefaultFileProtocol-51500PHARMAX-HQ-02:a0a-5
PHARMAX-HQ-01:a0a-5
ISCSI-A-6DefaultISCSI-A-69000PHARMAX-HQ-02:a0a-6
PHARMAX-HQ-01:a0a-6
ISCSI-B-12DefaultISCSI-B-129000PHARMAX-HQ-02:a0a-12
PHARMAX-HQ-01:a0a-12
Management-7DefaultManagement-71500PHARMAX-HQ-02:a0a-7
PHARMAX-HQ-01:a0a-7
Replication-11DefaultReplication-119000PHARMAX-HQ-02:a0a-11
PHARMAX-HQ-01:a0a-11
+
Table 29 - Network Broadcast Domain - PHARMAX-HQ

+

1.5.1.5 Failover Groups

- - - - - - - - -
NameVserverTarget
ClusterClusterZENPR-HQ-01:e0a
ZENPR-HQ-01:e0b
ZENPR-HQ-02:e0a
ZENPR-HQ-02:e0b
Default-1ZENPR-HQZENPR-HQ-01:a0a
Default-2ZENPR-HQZENPR-HQ-02:a0a
ISCSI-AZENPR-HQZENPR-HQ-01:a0a-6
ZENPR-HQ-02:a0a-6
ISCSI-BZENPR-HQZENPR-HQ-01:a0a-12
ZENPR-HQ-02:a0a-12
MANAGEMENTZENPR-HQZENPR-HQ-01:e0c
ZENPR-HQ-02:e0c
ReplicationZENPR-HQZENPR-HQ-01:a0a-11
ZENPR-HQ-02:a0a-11
VLAN5-MANAGEMENTZENPR-HQZENPR-HQ-01:a0a-5
ZENPR-HQ-02:a0a-5
-
Table 25 - Network Failover Group Information - ZENPR-HQ

-

1.5.1.6 Network Subnets

The following section provides the Subnet information on ZENPR-HQ.

+ + + + + + + +
ClusterClusterPHARMAX-HQ-02:e0a
PHARMAX-HQ-02:e0b
PHARMAX-HQ-01:e0a
PHARMAX-HQ-01:e0b
Default-1PHARMAX-HQPHARMAX-HQ-02:a0a
PHARMAX-HQ-01:a0a
FileProtocol-5PHARMAX-HQPHARMAX-HQ-02:a0a-5
PHARMAX-HQ-01:a0a-5
ISCSI-A-6PHARMAX-HQPHARMAX-HQ-02:a0a-6
PHARMAX-HQ-01:a0a-6
ISCSI-B-12PHARMAX-HQPHARMAX-HQ-02:a0a-12
PHARMAX-HQ-01:a0a-12
Management-7PHARMAX-HQPHARMAX-HQ-02:a0a-7
PHARMAX-HQ-01:a0a-7
Replication-11PHARMAX-HQPHARMAX-HQ-02:a0a-11
PHARMAX-HQ-01:a0a-11
+
Table 30 - Network Failover Group - PHARMAX-HQ

+

1.5.1.6 Network Subnets

- + + +
NameSubnetGatewayTotal IPUsed IPIp Ranges
VLAN5-MANAGEMENT192.168.5.0/24192.168.5.254110192.168.5.80-192.168.5.90
ESXi-ISCSI-BLOCK-A192.168.6.0/24192.168.6.254414192.168.6.10-192.168.6.50
ESXi-ISCSI-BLOCK-B192.168.12.0/24192.168.12.254414192.168.12.10-192.168.12.50
FileProtocol192.168.5.0/24192.168.5.254516192.168.5.100-192.168.5.150
-
Table 26 - Network Subnet Information - ZENPR-HQ

-

1.5.1.7 ZENPR-HQ Vserver Routes

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

+
Table 31 - Network Subnet - PHARMAX-HQ

+

1.5.1.7 PHARMAX-HQ Vserver Routes

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

-
DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.7.25420IPV4
0.0.0.0/0192.168.11.25420IPV4
-
Table 27 - Network Route Information - ZENPR-HQ

-
1.5.1.7.1 Network Interface Routes
The following section provides the Per Network Interface Routes information on ZENPR-HQ.

+
Table 32 - Network Route - PHARMAX-HQ

+
1.5.1.7.1 Network Interface Routes
- - +
DestinationGatewayLif NamesAddress Family
0.0.0.0/0192.168.7.254ZENPR-HQ-01_mgmt1
ZENPR-HQ-02_mgmt1
cluster_mgmt
IPV4
0.0.0.0/0192.168.11.254REPLICATION-ZENPR-HQ-01
REPLICATION-ZENPR-HQ-02
IPV4
0.0.0.0/0192.168.7.254PHARMAX-HQ-01_mgmt1
PHARMAX-HQ-02_mgmt1
cluster_mgmt
IPV4
-
Table 28 - Per Network Interface Route Information - ZENPR-HQ

-

1.5.1.8 NAS Vserver Routes

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

+
Table 33 - Per Network Interface Route - PHARMAX-HQ

+

1.5.1.8 CIFS Vserver Routes

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

DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.5.25420IPV4
-
Table 29 - Network Route Information - NAS

-
1.5.1.8.1 Network Interface Routes
The following section provides the Per Network Interface Routes information on NAS.

+
Table 34 - Network Route - CIFS

+
1.5.1.8.1 Network Interface Routes
- +
DestinationGatewayLif NamesAddress Family
0.0.0.0/0192.168.5.254lif_NAS_812
lif_NAS_964
IPV4
0.0.0.0/0192.168.5.254lif_CIFS_431
lif_CIFS_560
IPV4
-
Table 30 - Per Network Interface Route Information - NAS

-

1.5.1.9 NFS Vserver Routes

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

+
Table 35 - Per Network Interface Route - CIFS

+

1.5.1.9 ISCSI Vserver Routes

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

+ + + +
DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.12.25420IPV4
0.0.0.0/0192.168.6.25420IPV4
+
Table 36 - Network Route - ISCSI

+
1.5.1.9.1 Network Interface Routes
+ + + +
DestinationGatewayLif NamesAddress Family
0.0.0.0/0192.168.12.254lif_ISCSI_279
lif_ISCSI_726
IPV4
0.0.0.0/0192.168.6.254lif_ISCSI_799
lif_ISCSI_819
IPV4
+
Table 37 - Per Network Interface Route - ISCSI

+

1.5.1.10 NFS Vserver Routes

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

DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.5.25420IPV4
-
Table 31 - Network Route Information - NFS

-
1.5.1.9.1 Network Interface Routes
The following section provides the Per Network Interface Routes information on NFS.

+
Table 38 - Network Route - NFS

+
1.5.1.10.1 Network Interface Routes
- +
DestinationGatewayLif NamesAddress Family
0.0.0.0/0192.168.5.254lif_NFS_149
lif_NFS_593
IPV4
0.0.0.0/0192.168.5.254lif_NFS_140
lif_NFS_900
IPV4
-
Table 32 - Per Network Interface Route Information - NFS

-

1.5.1.10 SAN Vserver Routes

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

+
Table 39 - Per Network Interface Route - NFS

+

1.5.1.11 NVME Vserver Routes

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

- +
DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.6.25420IPV4
0.0.0.0/0192.168.12.25420IPV4
0.0.0.0/0192.168.6.25420IPV4
-
Table 33 - Network Route Information - SAN

-
1.5.1.10.1 Network Interface Routes
The following section provides the Per Network Interface Routes information on SAN.

+
Table 40 - Network Route - NVME

+
1.5.1.11.1 Network Interface Routes
- - + + +
DestinationGatewayLif NamesAddress Family
0.0.0.0/0192.168.6.254ISCSI-A-ZENPR-HQ-01
ISCSI-A-ZENPR-HQ-02
IPV4
0.0.0.0/0192.168.12.254ISCSI-B-ZENPR-HQ-01
ISCSI-B-ZENPR-HQ-02
IPV4
0.0.0.0/0192.168.12.254lif_NVME_599
lif_NVME_907
IPV4
0.0.0.0/0192.168.6.254lif_NVME_130
lif_NVME_567
IPV4
+
Table 41 - Per Network Interface Route - NVME

+

1.5.1.12 ObjectS3 Vserver Routes

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

+ +
DestinationGatewayMetricAddress Family
0.0.0.0/0192.168.5.25420IPV4
-
Table 34 - Per Network Interface Route Information - SAN

-

1.5.1.11 Network Interfaces

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

1.5.1.11.1 Cluster Network Interfaces
The following section provides the Cluster Network Interfaces Information on ZENPR-HQ.

+
Table 42 - Network Route - ObjectS3

+
1.5.1.12.1 Network Interface Routes
+ + +
DestinationGatewayLif NamesAddress Family
0.0.0.0/0192.168.5.254lif_ObjectS3_141
lif_ObjectS3_972
IPV4
+
Table 43 - Per Network Interface Route - ObjectS3

+

1.5.1.13 Network Interfaces

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

Cluster Network Interfaces

- - - - + + + +
Cluster InterfaceStatusData ProtocolsAddressVserver
ZENPR-HQ-01_clus1UPnone169.254.115.248Cluster
ZENPR-HQ-01_clus2UPnone169.254.188.186Cluster
ZENPR-HQ-02_clus1UPnone169.254.138.23Cluster
ZENPR-HQ-02_clus2UPnone169.254.118.172Cluster
PHARMAX-HQ-01_clus1UPnone169.254.70.24Cluster
PHARMAX-HQ-01_clus2UPnone169.254.107.211Cluster
PHARMAX-HQ-02_clus1UPnone169.254.3.211Cluster
PHARMAX-HQ-02_clus2UPnone169.254.173.197Cluster
-
Table 35 - Cluster Network Information - ZENPR-HQ

-
1.5.1.11.2 Management Network Interfaces
The following section provides the Management Network Interfaces Information on ZENPR-HQ.

+
Table 44 - Cluster Network - PHARMAX-HQ

+

Management Network Interfaces

- - - + + +
MGMT InterfaceStatusData ProtocolsAddressVserver
cluster_mgmtUPnone192.168.7.60ZENPR-HQ
ZENPR-HQ-01_mgmt1UPnone192.168.7.61ZENPR-HQ
ZENPR-HQ-02_mgmt1UPnone192.168.7.62ZENPR-HQ
cluster_mgmtUPnone192.168.7.60PHARMAX-HQ
PHARMAX-HQ-01_mgmt1UPnone192.168.7.61PHARMAX-HQ
PHARMAX-HQ-02_mgmt1UPnone192.168.7.62PHARMAX-HQ
-
Table 36 - Management Network Information - ZENPR-HQ

-
1.5.1.11.3 Intercluster Network Interfaces
The following section provides the Intercluster Network Interfaces Information on ZENPR-HQ.

+
Table 45 - Management Network - PHARMAX-HQ

+

Intercluster Network Interfaces

- - + +
Intercluster InterfaceStatusData ProtocolsAddressVserver
REPLICATION-ZENPR-HQ-01UPnone192.168.11.61ZENPR-HQ
REPLICATION-ZENPR-HQ-02UPnone192.168.11.62ZENPR-HQ
Replication-01UPnone192.168.11.10PHARMAX-HQ
Replication-02UPnone192.168.11.11PHARMAX-HQ
-
Table 37 - Intercluster Network Information - ZENPR-HQ

-
1.5.1.11.4 Data Network Interfaces
The following section provides the Data Network Interfaces Information on ZENPR-HQ.

+
Table 46 - Intercluster Network - PHARMAX-HQ

+

Data Network Interfaces

- - - - - - - - -
Data InterfaceStatusData ProtocolsAddressVserver
lif_NAS_812UPnfs cifs s3192.168.5.62NAS
lif_NAS_964UPnfs cifs s3192.168.5.61NAS
lif_NFS_149UPnfs cifs s3192.168.5.64NFS
lif_NFS_593UPnfs cifs192.168.5.63NFS
ISCSI-A-ZENPR-HQ-01UPiscsi192.168.6.61SAN
ISCSI-A-ZENPR-HQ-02UPiscsi192.168.6.62SAN
ISCSI-B-ZENPR-HQ-01UPiscsi192.168.12.61SAN
ISCSI-B-ZENPR-HQ-02UPiscsi192.168.12.62SAN
-
Table 38 - Data Network Information - ZENPR-HQ

-

1.6 Vserver Summary

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

1.6.1 NAS Vserver Configuration

The following section provides the configuration of the vserver NAS.

+ + + + + + + + + + + + + + + + + + + + + + +
lif_CIFS_431UPcifs192.168.5.101CIFS
lif_CIFS_560UPcifs192.168.5.100CIFS
lif_FCSAN_189UPfcp20:01:00:50:56:b0:03:d3FCSAN
lif_FCSAN_523UPfcp20:02:00:50:56:b0:03:d3FCSAN
lif_FCSAN_83UPfcp20:04:00:50:56:b0:03:d3FCSAN
lif_FCSAN_974UPfcp20:03:00:50:56:b0:03:d3FCSAN
lif_ISCSI_279UPiscsi192.168.12.10ISCSI
lif_ISCSI_726UPiscsi192.168.12.11ISCSI
lif_ISCSI_799UPiscsi192.168.6.11ISCSI
lif_ISCSI_819UPiscsi192.168.6.10ISCSI
lif_NFS_140UPnfs192.168.5.104NFS
lif_NFS_900UPnfs192.168.5.105NFS
lif_NVME_130UPnvme_tcp192.168.6.12NVME
lif_NVME_15UPfc_nvme20:07:00:50:56:b0:03:d3NVME
lif_NVME_271UPfc_nvme20:06:00:50:56:b0:03:d3NVME
lif_NVME_457UPfc_nvme20:09:00:50:56:b0:03:d3NVME
lif_NVME_567UPnvme_tcp192.168.6.13NVME
lif_NVME_599UPnvme_tcp192.168.12.13NVME
lif_NVME_907UPnvme_tcp192.168.12.12NVME
lif_NVME_956UPfc_nvme20:08:00:50:56:b0:03:d3NVME
lif_ObjectS3_141UPnfs cifs s3192.168.5.103ObjectS3
lif_ObjectS3_972UPnfs cifs s3192.168.5.102ObjectS3
+
Table 47 - Data Network - PHARMAX-HQ

+

HealthCheck - Check If Network Interface is Home

The following table provides the LIF Home Status Information on PHARMAX-HQ.

+ + +
Network InterfaceHome PortCurrent PortIsHomeVserver
lif_CIFS_431PHARMAX-HQ-02:a0a-5PHARMAX-HQ-01:a0a-5NoCIFS
+
Table 48 - Network Interface Home Status - PHARMAX-HQ

+

1.6 Vserver Information

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

1.6.1 CIFS Vserver Configuration

The following section provides the configuration of the vserver CIFS.

- +
Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifsfcp iscsi ndmpDefaultrunning
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
Table 39 - Vserver Information - NAS

-

1.6.1.1 Root Volume

The following section provides the Vserver Root Volume Information on NAS.

+
Table 49 - Information - CIFS

+

1.6.1.1 Root Volume

- +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
NAS_rootonline20 MB6%18 MBYesPHARMAX_HQ_01_SSD_1
CIFS_rootonline20 MB3%18 MBYesPHARMAX_HQ_01_SSD_1
-
Table 40 - Vserver Root Volume Information - NAS

-

1.6.1.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on ZENPR-HQ.
1.6.1.2.1 Volumes Fixed QoS Policy
The following section provides the Volume Fixed QoS Group information on ZENPR-HQ.

+
Table 50 - Root Volume - CIFS

+

1.6.1.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on PHARMAX-HQ.
1.6.1.2.1 Volumes Fixed QoS Policy
- - - + + +
Policy NameMax ThroughputMin ThroughputIs SharedVserver
extreme-fixed50000IOPS,1.53GB/s0NoZENPR-HQ
performance-fixed30000IOPS,937.5MB/s0NoZENPR-HQ
value-fixed15000IOPS,468.8MB/s0NoZENPR-HQ
extreme-fixed50000IOPS,1.53GB/s0NoPHARMAX-HQ
performance-fixed30000IOPS,937.5MB/s0NoPHARMAX-HQ
value-fixed15000IOPS,468.8MB/s0NoPHARMAX-HQ
-
Table 41 - Volume Fixed QoS Group Information - ZENPR-HQ

-
1.6.1.2.2 Volumes Adaptive QoS Policy
The following section provides the Volumes Adaptive QoS Group information on ZENPR-HQ.

+
Table 51 - Volume Fixed QoS Group - PHARMAX-HQ

+
1.6.1.2.2 Volumes Adaptive QoS Policy
- - - + + +
Policy NamePeak IopsExpected IopsMin IopsVserver
extreme12288IOPS/TB6144IOPS/TB1000IOPSZENPR-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSZENPR-HQ
value512IOPS/TB128IOPS/TB75IOPSZENPR-HQ
extreme12288IOPS/TB6144IOPS/TB1000IOPSPHARMAX-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSPHARMAX-HQ
value512IOPS/TB128IOPS/TB75IOPSPHARMAX-HQ
-
Table 42 - Volume Adaptive QoS Group Information - ZENPR-HQ

-

1.6.1.3 Storage Volumes

The following section provides NAS Volumes Information on NAS.

+
Table 52 - Volume Adaptive QoS Group - PHARMAX-HQ

+

1.6.1.3 Storage Volumes

- - - - - - - - - - - -
VolumeStatusCapacityAvailableUsedAggregate
DATAonline105 GB97 GB2% 
DATA__0001online105 GB97 GB2%PHARMAX_HQ_01_SSD_1
DATA_clone_299online105 GB97 GB2% 
DATA_clone_299__0001online105 GB97 GB2%PHARMAX_HQ_01_SSD_1
fg_oss_1630605678online842 GB219 GB0% 
fg_oss_1630605678__0001online421 GB219 GB0%PHARMAX_HQ_02_SSD_1
fg_oss_1630605678__0002online421 GB219 GB0%PHARMAX_HQ_02_SSD_1
SNAPLOCK_CPonline10 GB9 GB0%PHARMAX_HQ_02_SSD_1
SNAPLOCK_ENTonline10 GB9 GB0%PHARMAX_HQ_02_SSD_1
vol_19082021_201759_59_destonline5 GB879 MB84%PHARMAX_HQ_01_SSD_1
vol_19082021_201759_59_dest_clone_652online5 GB1000 MB82%PHARMAX_HQ_01_SSD_1
-
Table 43 - Vserver Volume Information - NAS

-
1.6.1.3.1 Per Volumes QoS Policy
The following section provides the Vserver per Volumes QoS Configuration on NAS.

+ + + + + + + + + + + + +
DATAonline11 GB10 GB0%PHARMAX_HQ_01_SSD_1
DATA_clone_100online11 GB10 GB0%PHARMAX_HQ_01_SSD_1
FlexGoupVolonline105 GB82 GB0% 
FlexGoupVol__0001online53 GB50 GB0%PHARMAX_HQ_01_SSD_1
FlexGoupVol__0002online53 GB32 GB0%PHARMAX_HQ_02_SSD_1
FlexGrouponline53 GB52 GB0% 
FlexGroup__0001online9 GB9 GB0%PHARMAX_HQ_02_SSD_1
FlexGroup__0002online9 GB9 GB0%PHARMAX_HQ_02_SSD_1
FlexGroup__0003online9 GB9 GB0%PHARMAX_HQ_01_SSD_1
FlexGroup__0004online9 GB9 GB0%PHARMAX_HQ_02_SSD_1
FlexGroup__0005online9 GB9 GB0%PHARMAX_HQ_01_SSD_1
FlexGroup__0006online9 GB9 GB0%PHARMAX_HQ_01_SSD_1
+
Table 53 - Volume - CIFS

+
1.6.1.3.1 Per Volumes QoS Policy
- - - - - - - -
VolumeFixed Policy NameAdaptive Policy Name
DATANoneperformance
DATA_clone_299NoneNone
fg_oss_1630605678NoneNone
SNAPLOCK_CPNoneNone
SNAPLOCK_ENTNoneNone
vol_19082021_201759_59_destNoneNone
vol_19082021_201759_59_dest_clone_652NoneNone
-
Table 44 - Vserver Volume QoS Information - NAS

-
1.6.1.3.2 FlexGroup Volumes
The following section provides the Vserver FlexGroup Volumes Configuration on NAS.

+ + + + +
DATAperformance-fixedNone
DATA_clone_100NoneNone
FlexGoupVolperformance-fixedNone
FlexGroupperformance-fixedNone
+
Table 54 - Volume QoS - CIFS

+
1.6.1.3.2 FlexGroup Volumes
- - - + +
VolumeStatusCapacity
DATAonline105 GB
DATA_clone_299online105 GB
fg_oss_1630605678online842 GB
FlexGoupVolonline105 GB
FlexGrouponline53 GB
-
Table 45 - Vserver Flexgroup Volume Information - NAS

-
1.6.1.3.3 Flexclone Volumes
The following section provides the Vserver Flexclone Volumes Configuration on NAS.

+
Table 55 - Flexgroup Volume - CIFS

+
1.6.1.3.3 Flexclone Volumes
- + - - - - - - - -
VolumeDATA_clone_299
VolumeDATA_clone_100
Parent VolumeDATA
Volume TypeRW
Parent Snapshotclone_DATA_clone_299.2021-08-14_234644.0
Space Reserve 
Space GuaranteeYes
Capacity105 GB
Available103 GB
Used3 GB
Aggregate 
-
-
- - - - - + - - - + + +
VolumeDATA_clone_299__0001
Parent VolumeDATA__0001
Volume TypeRW
Parent Snapshotclone_DATA_clone_299.2021-08-14_234644.0
Parent Snapshotclone_DATA_clone_100.2024-08-07_190814.0
Space Reservenone
Space GuaranteeYes
Capacity105 GB
Available103 GB
Used3 GB
Capacity11 GB
Available11 GB
Used7 MB
AggregatePHARMAX_HQ_01_SSD_1
-
-
1.6.1.3.4 Flexcache Volumes
The following section provides the Vserver Flexcache Volumes Configuration on NAS.

- - -
Cache ClusterCache VserverCache VolumeOrigin VserverOrigin VolumeCapacity
ZENPR-DRNAS-DRDATA_DRNASDATA105 GB
-
Table 46 - Vserver Flexcache Volume Connected Cache Information - NAS

-

1.6.1.4 Volumes Snapshot Configuration

The following section provides the Vserver Volumes Snapshot Configuration on NAS.

+
Table 56 - Cloned Volumes - DATA_clone_100

+

1.6.1.4 Volumes Snapshot Configuration

- - - - - - - - - - - -
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
DATAYes5 GB5 GB42 MBdefault
DATA__0001Yes5 GB5 GB42 MBdefault
DATA_clone_299Yes5 GB5 GB55 MBdefault
DATA_clone_299__0001Yes5 GB5 GB55 MBdefault
fg_oss_1630605678No42 GB00none
fg_oss_1630605678__0001No21 GB00none
fg_oss_1630605678__0002No21 GB00none
SNAPLOCK_CPYes512 MB510 MB2 MBdefault
SNAPLOCK_ENTYes512 MB510 MB2 MBdefault
vol_19082021_201759_59_destNo005 GBnone
vol_19082021_201759_59_dest_clone_652No000none
-
Table 47 - Vserver Volume SnapShot Configuration Information - NAS

-
1.6.1.4.1 HealthCheck - Volumes Snapshot
The following section provides the Vserver Volumes Snapshot HealthCheck on NAS.

- - - - - - - - - - - - - - - - - - - - - - - - - -
Volume NameSnapshot NameCreated TimeUsed
DATAweekly.2021-08-01_001507/31/2021 20:15:00134 MB
DATAdaily.2021-08-07_001008/06/2021 20:10:003 GB
DATAclone_DATA_clone_299.2021-08-14_234644.008/14/2021 23:46:453 GB
DATAdaily.2021-08-15_001008/15/2021 00:10:003 GB
DATAweekly.2021-08-15_001508/15/2021 00:15:003 GB
DATA__0001weekly.2021-08-01_001507/31/2021 20:15:001 MB
DATA__0001daily.2021-08-07_001008/06/2021 20:10:00744 KB
DATA__0001clone_DATA_clone_299.2021-08-14_234644.008/14/2021 23:46:45172 KB
DATA__0001daily.2021-08-15_001008/15/2021 00:10:00156 KB
DATA__0001weekly.2021-08-15_001508/15/2021 00:15:0038 MB
DATA_clone_299clone_DATA_clone_299.2021-08-14_234644.008/14/2021 23:46:453 GB
DATA_clone_299daily.2021-08-15_001008/15/2021 00:10:003 GB
DATA_clone_299weekly.2021-08-15_001508/15/2021 00:15:003 GB
DATA_clone_299__0001clone_DATA_clone_299.2021-08-14_234644.008/14/2021 23:46:4528 MB
DATA_clone_299__0001daily.2021-08-15_001008/15/2021 00:10:00140 KB
DATA_clone_299__0001weekly.2021-08-15_001508/15/2021 00:15:0026 MB
vol_19082021_201759_59_destdaily.2021-08-21_001008/20/2021 20:10:00236 KB
vol_19082021_201759_59_destdaily.2021-08-22_001008/21/2021 20:10:00184 KB
vol_19082021_201759_59_destweekly.2021-08-22_001508/21/2021 20:15:005 GB
vol_19082021_201759_59_destdaily.2021-08-23_001008/22/2021 20:10:00192 KB
vol_19082021_201759_59_destdaily.2021-08-31_021208/30/2021 22:12:53184 KB
vol_19082021_201759_59_destweekly.2021-08-31_021208/30/2021 22:12:54528 KB
vol_19082021_201759_59_destdaily.2021-08-31_201008/31/2021 20:10:00264 KB
vol_19082021_201759_59_destdaily.2021-09-01_092609/01/2021 09:26:41296 KB
-
Table 48 - HealthCheck - Volume Snapshot over 7 days - NAS

-

1.6.1.5 Export Policy

The following section provides the Vserver Volumes Export policy Information on NAS.

- - - - -
Policy NameRule IndexClient MatchProtocolRo RuleRw Rule
DATA10.0.0.0/0anynevernever
DATA2192.168.7.0/24anysyssys
default10.0.0.0/0anyanynever
-
Table 49 - Vserver Volume Export Policy Information - NAS

-

1.6.1.6 Qtrees

The following section provides the Vserver Volumes Qtree Information on NAS.

+ + + + + + + + + + + + +
DATAYes539 MB537 MB2 MBdefault
DATA_clone_100Yes539 MB537 MB2 MBdefault
FlexGoupVolYes5 GB3 GB17 MBdefault
FlexGoupVol__0001Yes3 GB3 GB9 MBdefault
FlexGoupVol__0002No3 GB08 MBnone
FlexGroupNo000none
FlexGroup__0001No000none
FlexGroup__0002No000none
FlexGroup__0003No000none
FlexGroup__0004No000none
FlexGroup__0005No000none
FlexGroup__0006No000none
+
Table 57 - Volume SnapShot Configuration - CIFS

+

1.6.1.5 Qtrees

- - - - - - - - - - - - - - - - - -
QtreeVolumeStatusSecurity StyleExport Policy
KBDATAnormalunixDATA
SHAREDATAnormalunixdefault
HRDATAnormalunixDATA
GBDATAnormalunixDATA
TBDATAnormalunixDATA
MBDATAnormalunixDATA
PBDATAnormalunixDATA
PBDATA_clone_299normalunixDATA
MBDATA_clone_299normalunixDATA
TBDATA_clone_299normalunixDATA
GBDATA_clone_299normalunixDATA
SHAREDATA_clone_299normalunixDATA
KBDATA_clone_299normalunixDATA
HRDATA_clone_299normalunixDATA
fabricpoolfg_oss_1630605678normalunixdefault
qtree_HRvol_19082021_201759_59_destreadonlyntfsdefault
qtree_HRvol_19082021_201759_59_dest_clone_652normalntfsdefault
-
Table 50 - Vserver Volume Qtree Information - NAS

-

1.6.1.7 Volume Quota

The following section provides the Vserver Volumes Quota Information on NAS.

1.6.1.7.1 NAS Vserver Volume Quota Status
The following section provides the NAS Volumes Quota Status Information on ZENPR-HQ.

+ + + + +
ITDATAnormalunixdefault
HRDATAnormalntfsdefault
HRDATA_clone_100normalntfsdefault
ITDATA_clone_100normalunixdefault
+
Table 58 - Volume Qtree - CIFS

+

1.6.1.6 Volume Quota

CIFS Vserver Volume Quota Status

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

+ - - - - - - - -
VolumeStatusSubstatus
CIFS_rootoffnone
DATAonnone
DATA_clone_299offnone
fg_oss_1630605678onnone
NAS_rootoffnone
SNAPLOCK_CPoffnone
SNAPLOCK_ENToffnone
vol_19082021_201759_59_destoffnone
vol_19082021_201759_59_dest_clone_652offnone
-
Table 51 - Vserver Volume Quota Status Information - NAS

-
1.6.1.7.2 NAS Vserver Volume Quota Information
The following section provides the NAS Volumes Quota Information on ZENPR-HQ.

+ + + +
DATA_clone_100offnone
FlexGoupVoloffnone
FlexGroupoffnone
+
Table 59 - Volume Quota Status - CIFS

+

CIFS Vserver Volume Quota Information

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

+ - - - - - - - -
VolumeTypeTargetDisk LimitFile LimitSoft Disk LimitSoft File Limit
DATAtree/vol/DATA/HR40 KB---
DATAtree*----
DATAtree/vol/DATA/GB19 MB---
DATAtree/vol/DATA/HR140 KB100k120 KB10k
DATAtree/vol/DATA/KB12 B ---
DATAtree/vol/DATA/MB1 KB---
DATAtree/vol/DATA/PB1 TB---
DATAtree/vol/DATA/SHARE500 KB-100 KB-
DATAtree/vol/DATA/TB1 GB---
-
Table 52 - Vserver Volume Quota Information - NAS

-
1.6.1.7.3 NAS Vserver Volume Quota Report (Disk)
The following section provides the NAS Volumes Quota Report (Disk) Information on ZENPR-HQ.

+ + +
DATAuser*10 KB---
DATAuser*----
+
Table 60 - Volume Quota - CIFS

+

CIFS Vserver Volume Quota Report (Disk)

The following section provides the CIFS Volumes Quota Report (Disk) Information on PHARMAX-HQ.

- - - - - - - - - + + + + + + + + +
VolumeQuota TargetQtreeDisk LimitSoft Disk LimitDisk Used
DATA/vol/DATA/SHARESHARE500 KB100 KB16 KB
DATA/vol/DATA/HRHR140 KB120 KB131 KB
DATA/vol/DATA/GBGB19 MB-0
DATA/vol/DATA/TBTB1 GB-0
DATA/vol/DATA/MBMB1 KB-0
DATA/vol/DATA/PBPB1 TB-0
DATA/vol/DATA/KBKB12 B -0
DATA* --0
fg_oss_1630605678/vol/fg_oss_1630605678/fabricpoolfabricpool95 MB-0
fg_oss_1630605678* --0
DATA/vol/DATA/ITIT--0
DATA/vol/DATA/HRHR40 KB-6 KB
DATA*HR10 KB-0
DATA*IT--0
DATA  --0
DATA* --0
DATA IT--0
DATA  --6 KB
DATA HR--6 KB
-
Table 53 - Vserver Volume Quota Report (Disk) Information - NAS

-
1.6.1.7.4 NAS Vserver Volume Quota Report (File)
The following section provides the NAS Volumes Quota Report (File) Information on ZENPR-HQ.

+
Table 61 - Volume Quota Report (Disk) - CIFS

+

CIFS Vserver Volume Quota Report (File)

The following section provides the CIFS Volumes Quota Report (File) Information on PHARMAX-HQ.

- - - - - - - - - -
VolumeQuota TargetQtreeFile LimitSoft File LimitFiles Used
DATA/vol/DATA/SHARESHARE--2k
DATA/vol/DATA/HRHR100k10k4
DATA/vol/DATA/GBGB--1
DATA/vol/DATA/TBTB--1
DATA/vol/DATA/MBMB--1
DATA/vol/DATA/PBPB--1
DATA/vol/DATA/KBKB--1
DATA* --0
fg_oss_1630605678/vol/fg_oss_1630605678/fabricpoolfabricpool--1
fg_oss_1630605678* --0
-
Table 54 - Vserver Volume Quota Report (File) Information - NAS

-

1.6.1.8 Protocol Information Summary

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

1.6.1.8.1 NFS Services
The following section provides the NFS Service Information on NAS.

- - -
Nfs v3Nfs v4Nfs v41General Access
EnabledDisabledDisabledYes
-
Table 55 - Vserver NFS Service Information - ZENPR-HQ

-
1.6.1.8.1.1 NFS Options
The following section provides the NFS Service Options Information on NAS.

- - - - - - - - - - - - - - + + + + + + + + +
Allow Idle ConnectionNo
Idle Connection Timeout360
Ignore NtAcl For RootNo
Enable EjukeboxYes
Nfs Access EnabledYes
Nfs Rootonly EnabledNo
Nfsv2 EnabledNo
Nfsv3 EnabledYes
Nfsv3 64bit Identifiers EnabledNo
Nfsv3 Connection Drop EnabledYes
Nfsv3 Fsid Change EnabledYes
Nfsv40 Acl EnabledNo
Nfsv40 EnabledNo
DATA/vol/DATA/ITIT--1
DATA/vol/DATA/HRHR--11
DATA*HR--0
DATA*IT--0
DATA  --2
DATA* --0
DATA IT--1
DATA  --11
DATA HR--11
-
Table 56 - Vserver NFS Service Options - NAS

-
1.6.1.8.1.2 NFS Volume Export
The following section provides the VServer NFS Service Exports Information on NAS.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VserverPath Name
NAS/
NAS/DATA
NAS/vol/DATA
NAS/vol/DATA/GB
NAS/vol/DATA/HR
NAS/vol/DATA/KB
NAS/vol/DATA/MB
NAS/vol/DATA/PB
NAS/vol/DATA/SHARE
NAS/vol/DATA/TB
NAS/vol/DATA_clone_299
NAS/vol/DATA_clone_299/GB
NAS/vol/DATA_clone_299/HR
NAS/vol/DATA_clone_299/KB
NAS/vol/DATA_clone_299/MB
NAS/vol/DATA_clone_299/PB
NAS/vol/DATA_clone_299/SHARE
NAS/vol/DATA_clone_299/TB
NAS/vol/NAS_root
NAS/vol/SNAPLOCK_CP
NAS/vol/SNAPLOCK_ENT
NAS/vol/fg_oss_1630605678
NAS/vol/fg_oss_1630605678/fabricpool
NAS/vol/vol_19082021_201759_59_dest
NAS/vol/vol_19082021_201759_59_dest/qtree_HR
NAS/vol/vol_19082021_201759_59_dest_clone_652
NAS/vol/vol_19082021_201759_59_dest_clone_652/qtree_HR
-
Table 57 - Vserver NFS Service Volume Export - NAS

-
1.6.1.8.2 CIFS Services Summary
The following section provides the CIFS Service Information on NAS.

+
Table 62 - Volume Quota Report (File) - CIFS

+

1.6.1.7 Protocol Information

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

1.6.1.7.1 CIFS Services Information
The following section provides the CIFS Service Information on CIFS.

- - - + + + - + - +
Node NameZENPR-HQ-01
Cifs Domain Namezenpr.local
Cifs NetBios NameNAS
Node NamePHARMAX-HQ-01
Cifs Domain Namepharmax.local
Cifs NetBios NameCIFS
Cifs Domain IP192.168.5.1
AD Server SiteZenpr-HQ
AD Server SitePharmax-HQ
Cifs Server StatusRunning
Status DetailsResponse time (msec): 6
Status DetailsResponse time (msec): 7
StatusUP
-
+
Table 63 - CIFS Service - PHARMAX-HQ-01

- - - + + + - + - +
Node NameZENPR-HQ-02
Cifs Domain Namezenpr.local
Cifs NetBios NameNAS
Node NamePHARMAX-HQ-02
Cifs Domain Namepharmax.local
Cifs NetBios NameCIFS
Cifs Domain IP192.168.5.1
AD Server SiteZenpr-HQ
AD Server SitePharmax-HQ
Cifs Server StatusRunning
Status DetailsResponse time (msec): 5
Status DetailsResponse time (msec): 154
StatusUP
-
-
1.6.1.8.2.1 CIFS Service Configuration
The following section provides the Cifs Service Configuration Information on NAS.

+
Table 64 - CIFS Service - PHARMAX-HQ-02

+

CIFS Service Configuration

- +
Kerberos Clock Skew5
Kerberos Renew Age7
Kerberos Ticket Age10
Aes Encryption EnabledNo
Aes Encryption EnabledYes
Signing RequiredNo
Smb Encryption RequiredNo
Lm Compatibility Levellm_ntlm_ntlmv2_krb
-
Table 58 - Vserver CIFS Service Security Information - NAS

-
1.6.1.8.2.2 CIFS Domain Controller
The following section provides the Connected Domain Controller Information on NAS.

+
Table 65 - CIFS Service Security - CIFS

+

CIFS Domain Controller

- - - - -
DC NameDomainNodeServer TypePrefer TypeStatus
cayey-dc-01vzenpr.localZENPR-HQ-01ms_dcadequateundetermined
cayey-dc-01vzenpr.localZENPR-HQ-02ms_dcadequateundetermined
server-dc-01vzenpr.localZENPR-HQ-01ms_dcfavoredok
server-dc-01vzenpr.localZENPR-HQ-02ms_dcfavoredok
-
Table 59 - CIFS Connected Domain Controller Information - NAS

-
1.6.1.8.2.3 CIFS Local Group
The following section provides the Cifs Service Local Group Information on NAS.

+ + + + + + + + +
server-dc-01vpharmax.localPHARMAX-HQ-01ms_dcfavoredok
server-dc-01vpharmax.localPHARMAX-HQ-01ms_ldapfavoredundetermined
server-dc-01vpharmax.localPHARMAX-HQ-02ms_ldapfavoredundetermined
server-dc-01vpharmax.localPHARMAX-HQ-02ms_dcfavoredok
server-dc-02vpharmax.localPHARMAX-HQ-01ms_ldapfavoredundetermined
server-dc-02vpharmax.localPHARMAX-HQ-01ms_dcfavoredundetermined
server-dc-02vpharmax.localPHARMAX-HQ-02ms_dcfavoredundetermined
server-dc-02vpharmax.localPHARMAX-HQ-02ms_ldapfavoredundetermined
+
Table 66 - CIFS Connected Domain Controller - CIFS

+

CIFS Local Group

@@ -1017,16 +945,16 @@
Group NameDescription
BUILTIN\AdministratorsBuilt-in Administrators group
BUILTIN\Backup OperatorsBackup Operators group
BUILTIN\Power UsersRestricted administrative privileges
BUILTIN\UsersAll users
-
Table 60 - CIFS Connected Local Group Information - NAS

-
The following section provides the Cifs Service Local Group Memeber Information on NAS.

+
Table 67 - CIFS Connected Local Group - CIFS

+

CIFS Local Group Members

- - - - + + + +
Group NameDescription
BUILTIN\AdministratorsNAS\Administrator
BUILTIN\AdministratorsZENPR\Domain Admins
BUILTIN\GuestsZENPR\Domain Guests
BUILTIN\UsersZENPR\Domain Users
BUILTIN\AdministratorsCIFS\Administrator
BUILTIN\AdministratorsPHARMAX\Domain Admins
BUILTIN\GuestsPHARMAX\Domain Guests
BUILTIN\UsersPHARMAX\Domain Users
-
Table 61 - CIFS Connected Local Group Members Information - NAS

-
1.6.1.8.2.4 CIFS Options
The following section provides the CIFS Service Options Information on NAS.

+
Table 68 - CIFS Connected Local Group Members - CIFS

+

CIFS Options

@@ -1048,7 +976,7 @@ - + @@ -1057,998 +985,989 @@
Client Session Timeout900
Default Unix Userpcuser
Smb31 EnabledYes
Smb3 EnabledYes
Max Connections Per Session32
Max Credits128
Max Credits512
Max File Write Zero Length33554432
Max Lifs Per Session256
Max Mpx255
Shadow Copy Dir Depth5
Smb1 Max Buffer Size65535
-
Table 62 - Vserver CIFS Service Options - NAS

-
1.6.1.8.2.5 CIFS Share
The following section provides the CIFS Service Shares Information on NAS.

+
Table 69 - CIFS Service Options - CIFS

+

CIFS Share

- - + + + - + +
Share NameVolumePath
c$NAS_root/
DATADATA/DATA
c$CIFS_root/
FlexGoupVolFlexGoupVol/FlexGoupVol
FlexGroupFlexGroup/FlexGroup
HRDATA/DATA/HR
ipc$NAS_root/
ipc$CIFS_root/
ITDATA/DATA/IT
-
Table 63 - Vserver CIFS Share Information - NAS

-
The following section provides the CIFS Shares Properties & Acl Information on NAS.

+
Table 70 - 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
FlexGoupVolEveryone / Full Controloplocks, browsable, changenotify, show_previous_versions
FlexGroupEveryone / Full Controloplocks, browsable, changenotify, show_previous_versions
HREveryone / Full Controlbrowsable, show_previous_versions, oplocks, changenotify
ipc$ browsable
ITEveryone / Full Controlbrowsable, show_previous_versions, oplocks, changenotify
-
Table 64 - The CIFS Share Properties & Acl Information - NAS

-
1.6.1.8.3 S3 Services Configuration Summary
The following section provides the S3 Service Information on NAS.

- - -
HTTPHTTP PortHTTPSHTTPS PortStatus
No80Yes443UP
-
Table 65 - Vserver S3 Service Information - NAS

-
1.6.1.8.3.1 S3 Buckets
The following section provides the S3 Bucket Information on NAS.

- - -
BucketVolumeTotalUsed
fabricpoolfg_oss_163060567895 GB0
-
Table 66 - Vserver S3 Bucket Information - NAS

-

1.6.2 NFS Vserver Configuration

The following section provides the configuration of the vserver NFS.

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

+

1.6.2 FCSAN Vserver Configuration

The following section provides the configuration of the vserver FCSAN.

- +
Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifs fcp iscsi ndmp Defaultrunning
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
Table 67 - Vserver Information - NFS

-

1.6.2.1 Root Volume

The following section provides the Vserver Root Volume Information on NFS.

+
Table 72 - Information - FCSAN

+

1.6.2.1 Root Volume

- +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
NFS_rootonline20 MB8%17 MBYesPHARMAX_HQ_01_SSD_1
FCSAN_rootonline20 MB2%19 MBYesPHARMAX_HQ_02_SSD_1
-
Table 68 - Vserver Root Volume Information - NFS

-

1.6.2.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on ZENPR-HQ.
1.6.2.2.1 Volumes Fixed QoS Policy
The following section provides the Volume Fixed QoS Group information on ZENPR-HQ.

+
Table 73 - Root Volume - FCSAN

+

1.6.2.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on PHARMAX-HQ.
1.6.2.2.1 Volumes Fixed QoS Policy
- - - + + +
Policy NameMax ThroughputMin ThroughputIs SharedVserver
extreme-fixed50000IOPS,1.53GB/s0NoZENPR-HQ
performance-fixed30000IOPS,937.5MB/s0NoZENPR-HQ
value-fixed15000IOPS,468.8MB/s0NoZENPR-HQ
extreme-fixed50000IOPS,1.53GB/s0NoPHARMAX-HQ
performance-fixed30000IOPS,937.5MB/s0NoPHARMAX-HQ
value-fixed15000IOPS,468.8MB/s0NoPHARMAX-HQ
-
Table 69 - Volume Fixed QoS Group Information - ZENPR-HQ

-
1.6.2.2.2 Volumes Adaptive QoS Policy
The following section provides the Volumes Adaptive QoS Group information on ZENPR-HQ.

+
Table 74 - Volume Fixed QoS Group - PHARMAX-HQ

+
1.6.2.2.2 Volumes Adaptive QoS Policy
- - - + + +
Policy NamePeak IopsExpected IopsMin IopsVserver
extreme12288IOPS/TB6144IOPS/TB1000IOPSZENPR-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSZENPR-HQ
value512IOPS/TB128IOPS/TB75IOPSZENPR-HQ
extreme12288IOPS/TB6144IOPS/TB1000IOPSPHARMAX-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSPHARMAX-HQ
value512IOPS/TB128IOPS/TB75IOPSPHARMAX-HQ
-
Table 70 - Volume Adaptive QoS Group Information - ZENPR-HQ

-

1.6.2.3 Storage Volumes

The following section provides NFS Volumes Information on NFS.

+
Table 75 - Volume Adaptive QoS Group - PHARMAX-HQ

+

1.6.2.3 Storage Volumes

- - - - - - - -
VolumeStatusCapacityAvailableUsedAggregate
fg_oss_1630340493online842 GB219 GB0% 
fg_oss_1630340493__0001online421 GB219 GB0%PHARMAX_HQ_02_SSD_1
fg_oss_1630340493__0002online421 GB219 GB0%PHARMAX_HQ_02_SSD_1
fg_oss_1630605744online842 GB219 GB0% 
fg_oss_1630605744__0001online421 GB219 GB0%PHARMAX_HQ_02_SSD_1
fg_oss_1630605744__0002online421 GB219 GB0%PHARMAX_HQ_02_SSD_1
SHARE_NFSonline1 GB1024 MB0%PHARMAX_HQ_01_SSD_1
-
Table 71 - Vserver Volume Information - NFS

-
1.6.2.3.1 Per Volumes QoS Policy
The following section provides the Vserver per Volumes QoS Configuration on NFS.

- - - - +
VolumeFixed Policy NameAdaptive Policy Name
fg_oss_1630340493NoneNone
fg_oss_1630605744NoneNone
SHARE_NFSperformance-fixedNone
EXchangeonline12 GB12 GB0%PHARMAX_HQ_02_SSD_1
-
Table 72 - Vserver Volume QoS Information - NFS

-
1.6.2.3.2 FlexGroup Volumes
The following section provides the Vserver FlexGroup Volumes Configuration on NFS.

- - - -
VolumeStatusCapacity
fg_oss_1630340493online842 GB
fg_oss_1630605744online842 GB
-
Table 73 - Vserver Flexgroup Volume Information - NFS

-

1.6.2.4 Volumes Snapshot Configuration

The following section provides the Vserver Volumes Snapshot Configuration on NFS.

- - - - - - - - -
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
fg_oss_1630340493No42 GB00none
fg_oss_1630340493__0001No21 GB00none
fg_oss_1630340493__0002No21 GB00none
fg_oss_1630605744No42 GB00none
fg_oss_1630605744__0001No21 GB00none
fg_oss_1630605744__0002No21 GB00none
SHARE_NFSYes54 MB51 MB3 MBdefault
-
Table 74 - Vserver Volume SnapShot Configuration Information - NFS

-
1.6.2.4.1 HealthCheck - Volumes Snapshot
The following section provides the Vserver Volumes Snapshot HealthCheck on NFS.

- - - - -
Volume NameSnapshot NameCreated TimeUsed
SHARE_NFSweekly.2021-11-05_150211/05/2021 15:02:17452 KB
SHARE_NFSweekly.2021-11-11_160511/11/2021 16:05:17360 KB
SHARE_NFSdaily.2021-11-13_193611/13/2021 19:36:53400 KB
-
Table 75 - HealthCheck - Volume Snapshot over 7 days - NFS

-

1.6.2.5 Export Policy

The following section provides the Vserver Volumes Export policy Information on NFS.

- - -
Policy NameRule IndexClient MatchProtocolRo RuleRw Rule
default10.0.0.0/0nfs3, nfs4, nfsanyany
-
Table 76 - Vserver Volume Export Policy Information - NFS

-

1.6.2.6 Qtrees

The following section provides the Vserver Volumes Qtree Information on NFS.

- - - - - -
QtreeVolumeStatusSecurity StyleExport Policy
hr01fg_oss_1630340493normalunixdefault
miniofg_oss_1630605744normalunixdefault
ITSHARE_NFSnormalunixdefault
DPSHARE_NFSnormalunixdefault
-
Table 77 - Vserver Volume Qtree Information - NFS

-

1.6.2.7 Protocol Information Summary

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

1.6.2.7.1 NFS Services
The following section provides the NFS Service Information on NFS.

- - -
Nfs v3Nfs v4Nfs v41General Access
EnabledEnabledEnabledYes
-
Table 78 - Vserver NFS Service Information - ZENPR-HQ

-
1.6.2.7.1.1 NFS Options
The following section provides the NFS Service Options Information on NFS.

- - - - - - - - - - - - - - -
Allow Idle ConnectionNo
Idle Connection Timeout360
Ignore NtAcl For RootNo
Enable EjukeboxYes
Nfs Access EnabledYes
Nfs Rootonly EnabledNo
Nfsv2 EnabledNo
Nfsv3 EnabledYes
Nfsv3 64bit Identifiers EnabledNo
Nfsv3 Connection Drop EnabledYes
Nfsv3 Fsid Change EnabledYes
Nfsv40 Acl EnabledNo
Nfsv40 EnabledYes
-
Table 79 - Vserver NFS Service Options - NFS

-
1.6.2.7.1.2 NFS Volume Export
The following section provides the VServer NFS Service Exports Information on NFS.

- - - - - - - - - - - -
VserverPath Name
NFS/
NFS/SHARE_NFS
NFS/vol/NFS_root
NFS/vol/SHARE_NFS
NFS/vol/SHARE_NFS/DP
NFS/vol/SHARE_NFS/IT
NFS/vol/fg_oss_1630340493
NFS/vol/fg_oss_1630340493/hr01
NFS/vol/fg_oss_1630605744
NFS/vol/fg_oss_1630605744/minio
-
Table 80 - Vserver NFS Service Volume Export - NFS

-
1.6.2.7.2 CIFS Services Summary
The following section provides the CIFS Service Information on NFS.

- - - - - - - - - +
Table 76 - Volume - FCSAN

+
1.6.2.3.1 Per Volumes QoS Policy
Node NameZENPR-HQ-01
Cifs Domain Namezenpr.local
Cifs NetBios NameNFS
Cifs Domain IP192.168.5.1
AD Server SiteZenpr-HQ
Cifs Server StatusRunning
Status DetailsResponse time (msec): 4
StatusUP
+ +
VolumeFixed Policy NameAdaptive Policy Name
EXchangeperformance-fixedNone
-
-
- - - - - - - - - +
Table 77 - Volume QoS - FCSAN

+

1.6.2.4 Protocol Information

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

1.6.2.4.1 FCP Services Information
The following section provides the FCP Service Information on FCSAN.

Node NameZENPR-HQ-02
Cifs Domain Namezenpr.local
Cifs NetBios NameNFS
Cifs Domain IP192.168.5.1
AD Server SiteZenpr-HQ
Cifs Server StatusRunning
Status DetailsResponse time (msec): 5
StatusUP
+ + +
FCP WWNNStatus
20:00:00:50:56:b0:03:d3Up
+
Table 78 - FCP Service - FCSAN

+

FCP Physical Adapter

+ + + + + + + + + + + + + +
Node NameAdapterProtocolSpeedStatus
PHARMAX-HQ-010afibre_channelautoUp
PHARMAX-HQ-010bfibre_channelautoUp
PHARMAX-HQ-010efibre_channelautoUp
PHARMAX-HQ-010ffibre_channelautoUp
PHARMAX-HQ-011afibre_channelautoUp
PHARMAX-HQ-011bfibre_channelautoUp
PHARMAX-HQ-020afibre_channelautoUp
PHARMAX-HQ-020bfibre_channelautoUp
PHARMAX-HQ-020efibre_channelautoUp
PHARMAX-HQ-020ffibre_channelautoUp
PHARMAX-HQ-021afibre_channelautoUp
PHARMAX-HQ-021bfibre_channelautoUp
+
Table 79 - FCP Physical Adapter - PHARMAX-HQ

+

FCP Interfaces

+ + + + +
Interface NameFCP WWPNHome Port
lif_FCSAN_18920:01:00:50:56:b0:03:d30a
lif_FCSAN_52320:02:00:50:56:b0:03:d30b
lif_FCSAN_8320:04:00:50:56:b0:03:d30b
lif_FCSAN_97420:03:00:50:56:b0:03:d30a
-
-
1.6.2.7.2.1 CIFS Service Configuration
The following section provides the Cifs Service Configuration Information on NFS.

+
Table 80 - FCP Interface - FCSAN

+
1.6.2.4.2 Lun Storage
The following section provides the Lun Storage Information on FCSAN.

- - - - - - - -
Kerberos Clock Skew5
Kerberos Renew Age7
Kerberos Ticket Age10
Aes Encryption EnabledNo
Signing RequiredNo
Smb Encryption RequiredNo
Lm Compatibility Levellm_ntlm_ntlmv2_krb
-
Table 81 - Vserver CIFS Service Security Information - NFS

-
1.6.2.7.2.2 CIFS Domain Controller
The following section provides the Connected Domain Controller Information on NFS.

- - - - - -
DC NameDomainNodeServer TypePrefer TypeStatus
cayey-dc-01vzenpr.localZENPR-HQ-01ms_dcadequateundetermined
cayey-dc-01vzenpr.localZENPR-HQ-02ms_dcadequateundetermined
server-dc-01vzenpr.localZENPR-HQ-01ms_dcfavoredok
server-dc-01vzenpr.localZENPR-HQ-02ms_dcfavoredok
-
Table 82 - CIFS Connected Domain Controller Information - NFS

-
1.6.2.7.2.3 CIFS Local Group
The following section provides the Cifs Service Local Group Information on NFS.

- - - - - - -
Group NameDescription
BUILTIN\AdministratorsBuilt-in Administrators group
BUILTIN\Backup OperatorsBackup Operators group
BUILTIN\GuestsBuilt-in Guests Group
BUILTIN\Power UsersRestricted administrative privileges
BUILTIN\UsersAll users
-
Table 83 - CIFS Connected Local Group Information - NFS

-
The following section provides the Cifs Service Local Group Memeber Information on NFS.

- - - - - + + + + + + + + + + + + + + +
Group NameDescription
BUILTIN\AdministratorsNFS\Administrator
BUILTIN\AdministratorsZENPR\Domain Admins
BUILTIN\GuestsZENPR\Domain Guests
BUILTIN\UsersZENPR\Domain Users
Lun NameExchange
Parent VolumeEXchange
Path/vol/EXchange/Exchange
Serial NumberwpEMk$WwN3OQ
Initiator GroupEXchange_7Aug24_vix0_igroup
Home Node PHARMAX-HQ-02
Capacity10 GB
Available10 GB
Used0%
OS Typewindows_2008
Is ThinYes
Space AllocationEnabled
Space ReservationDisabled
Is MappedYes
StatusUp
-
Table 84 - CIFS Connected Local Group Members Information - NFS

-
1.6.2.7.2.4 CIFS Options
The following section provides the CIFS Service Options Information on NFS.

+
Table 81 - Lun - Exchange

+

Igroup Mapping

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Client Session Timeout900
Default Unix Userpcuser
Client Version Reporting EnabledYes
Copy Offload Direct Copy EnabledYes
Copy Offload EnabledYes
Dac EnabledNo
Export Policy EnabledNo
Large MTU EnabledYes
Local Auth EnabledYes
Local Users And Groups EnabledYes
Multi Channel EnabledYes
Nbns EnabledNo
Netbios Over Tcp EnabledYes
Referral EnabledNo
Shadow Copy EnabledYes
Smb1 EnabledNo
Smb2 EnabledYes
Smb31 EnabledYes
Smb3 EnabledYes
Max Connections Per Session32
Max Credits128
Max File Write Zero Length33554432
Max Lifs Per Session256
Max Mpx255
Max Opens Same File Per Tree1000
Restrict Anonymousno_enumeration
Shadow Copy Dir Depth5
Smb1 Max Buffer Size65535
-
Table 85 - Vserver CIFS Service Options - NFS

-
1.6.2.7.2.5 CIFS Share
The following section provides the CIFS Service Shares Information on NFS.

- - - - - -
Share NameVolumePath
c$NFS_root/
DPSHARE_NFS/SHARE_NFS/DP
ipc$NFS_root/
ITSHARE_NFS/SHARE_NFS/IT
-
Table 86 - Vserver CIFS Share Information - NFS

-
The following section provides the CIFS Shares Properties & Acl Information on NFS.

- - - - - -
Share NameShare ACLShare Properties
c$BUILTIN\Administrators / Full Controloplocks, browsable, changenotify, show_previous_versions
DPEveryone / Full Controlbrowsable, show_previous_versions, oplocks, changenotify
ipc$ browsable
ITEveryone / Full Controlbrowsable, show_previous_versions, oplocks, changenotify
-
Table 87 - The CIFS Share Properties & Acl Information - NFS

-
1.6.2.7.3 S3 Services Configuration Summary
The following section provides the S3 Service Information on NFS.

- - -
HTTPHTTP PortHTTPSHTTPS PortStatus
No80Yes443UP
-
Table 88 - Vserver S3 Service Information - NFS

-
1.6.2.7.3.1 S3 Buckets
The following section provides the S3 Bucket Information on NFS.

- - - + + + + + +
BucketVolumeTotalUsed
hr01fg_oss_1630340493100 GB0
miniofg_oss_1630605744100 GB0
Igroup NameEXchange_7Aug24_vix0_igroup
Typewindows
Protocolmixed
Initiatorsiqn.1991-05.com.microsoft:server-dc-01v.pharmax.local
Mapped LunExchange
Reporting NodesPHARMAX-HQ-01
PHARMAX-HQ-02
-
Table 89 - Vserver S3 Bucket Information - NFS

-

1.6.3 SAN Vserver Configuration

The following section provides the configuration of the vserver SAN.

+
Table 82 - Igroup - EXchange_7Aug24_vix0_igroup

+

1.6.3 ISCSI Vserver Configuration

The following section provides the configuration of the vserver ISCSI.

- +
Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datafcp iscsinfs cifs ndmpDefaultrunning
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
Table 90 - Vserver Information - SAN

-

1.6.3.1 Root Volume

The following section provides the Vserver Root Volume Information on SAN.

+
Table 83 - Information - ISCSI

+

1.6.3.1 Root Volume

- +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
SAN_rootonline20 MB6%18 MBYesPHARMAX_HQ_01_SSD_1
ISCSI_rootonline20 MB3%18 MBYesPHARMAX_HQ_01_SSD_1
-
Table 91 - Vserver Root Volume Information - SAN

-

1.6.3.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on ZENPR-HQ.
1.6.3.2.1 Volumes Fixed QoS Policy
The following section provides the Volume Fixed QoS Group information on ZENPR-HQ.

+
Table 84 - Root Volume - ISCSI

+

1.6.3.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on PHARMAX-HQ.
1.6.3.2.1 Volumes Fixed QoS Policy
- - - + + +
Policy NameMax ThroughputMin ThroughputIs SharedVserver
extreme-fixed50000IOPS,1.53GB/s0NoZENPR-HQ
performance-fixed30000IOPS,937.5MB/s0NoZENPR-HQ
value-fixed15000IOPS,468.8MB/s0NoZENPR-HQ
extreme-fixed50000IOPS,1.53GB/s0NoPHARMAX-HQ
performance-fixed30000IOPS,937.5MB/s0NoPHARMAX-HQ
value-fixed15000IOPS,468.8MB/s0NoPHARMAX-HQ
-
Table 92 - Volume Fixed QoS Group Information - ZENPR-HQ

-
1.6.3.2.2 Volumes Adaptive QoS Policy
The following section provides the Volumes Adaptive QoS Group information on ZENPR-HQ.

+
Table 85 - Volume Fixed QoS Group - PHARMAX-HQ

+
1.6.3.2.2 Volumes Adaptive QoS Policy
- - - + + +
Policy NamePeak IopsExpected IopsMin IopsVserver
extreme12288IOPS/TB6144IOPS/TB1000IOPSZENPR-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSZENPR-HQ
value512IOPS/TB128IOPS/TB75IOPSZENPR-HQ
extreme12288IOPS/TB6144IOPS/TB1000IOPSPHARMAX-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSPHARMAX-HQ
value512IOPS/TB128IOPS/TB75IOPSPHARMAX-HQ
-
Table 93 - Volume Adaptive QoS Group Information - ZENPR-HQ

-

1.6.3.3 Storage Volumes

The following section provides SAN Volumes Information on SAN.

+
Table 86 - Volume Adaptive QoS Group - PHARMAX-HQ

+

1.6.3.3 Storage Volumes

- - - - - - - -
VolumeStatusCapacityAvailableUsedAggregate
NTAPSOL_LUN_1online50 GB50 GB0%PHARMAX_HQ_01_SSD_1
Oracle_Data_Volumesonline253 GB179 GB0%PHARMAX_HQ_01_SSD_1
SERVER_DATASTOREonline15 GB6 GB60%PHARMAX_HQ_01_SSD_1
SERVER_DATASTORE_2online20 GB20 GB0%PHARMAX_HQ_01_SSD_1
SERVER_DATASTORE_DR_destonline316 MB66 MB77%PHARMAX_HQ_01_SSD_1
SRM_PlaceHolder_DR_destonline128 MB115 MB5%PHARMAX_HQ_01_SSD_1
TESTonline20 GB6 GB70%PHARMAX_HQ_01_SSD_1
-
Table 94 - Vserver Volume Information - SAN

-
1.6.3.3.1 Per Volumes QoS Policy
The following section provides the Vserver per Volumes QoS Configuration on SAN.

+ + + + +
CG_Test_vol_1online21 GB21 GB0%PHARMAX_HQ_01_SSD_1
SQLCluster_Quorumonline12 GB12 GB0%PHARMAX_HQ_01_SSD_1
UnmappedLunonline1 GB194 MB84%PHARMAX_HQ_02_SSD_1
VMWARE_LUNonline12 GB2 GB84%PHARMAX_HQ_01_SSD_1
+
Table 87 - Volume - ISCSI

+
1.6.3.3.1 Per Volumes QoS Policy
- - - - - - - -
VolumeFixed Policy NameAdaptive Policy Name
NTAPSOL_LUN_1performance-fixedNone
Oracle_Data_Volumesperformance-fixedNone
SERVER_DATASTOREextreme-fixedNone
SERVER_DATASTORE_2performance-fixedNone
SERVER_DATASTORE_DR_destperformance-fixedNone
SRM_PlaceHolder_DR_destperformance-fixedNone
TESTperformance-fixedNone
-
Table 95 - Vserver Volume QoS Information - SAN

-

1.6.3.4 Volumes Snapshot Configuration

The following section provides the Vserver Volumes Snapshot Configuration on SAN.

+ + + + +
CG_Test_vol_1performance-fixedNone
SQLCluster_Quorumperformance-fixedNone
UnmappedLunperformance-fixedNone
VMWARE_LUNperformance-fixedNone
+
Table 88 - Volume QoS - ISCSI

+

1.6.3.4 Volumes Snapshot Configuration

- - - - - - - -
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
NTAPSOL_LUN_1No00170 MBnone
Oracle_Data_VolumesYes13 GB03 GBdefault
SERVER_DATASTORENo005 GBnone
SERVER_DATASTORE_2No000none
SERVER_DATASTORE_DR_destNo16 MB12 MB4 MBnone
SRM_PlaceHolder_DR_destNo6 MB6 MB500 KBnone
TESTNo000none
-
Table 96 - Vserver Volume SnapShot Configuration Information - SAN

-
1.6.3.4.1 HealthCheck - Volumes Snapshot
The following section provides the Vserver Volumes Snapshot HealthCheck on SAN.

- - - - - - - - -
Volume NameSnapshot NameCreated TimeUsed
NTAPSOL_LUN_1clone_NTAPSOL_LUN_1_cl.2021-07-22_020615.007/21/2021 22:06:16170 MB
Oracle_Data_VolumesOracle_Database_ntaprhat-01v_08-01-2021_17.19.27.3637_008/01/2021 17:19:142 GB
Oracle_Data_VolumesOracle_Database_ntaprhat-01v_08-05-2021_12.13.54.2873_008/05/2021 12:13:4495 MB
Oracle_Data_VolumesOracle_Database_ntaprhat-01v_08-05-2021_16.35.03.2903_008/05/2021 16:34:51745 MB
Oracle_Data_Volumesweekly.2021-11-05_150211/05/2021 15:02:17224 KB
Oracle_Data_Volumesweekly.2021-11-11_160511/11/2021 16:05:17196 KB
Oracle_Data_Volumesdaily.2021-11-13_193611/13/2021 19:36:53236 KB
-
Table 97 - HealthCheck - Volume Snapshot over 7 days - SAN

-

1.6.3.5 Protocol Information Summary

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

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

+ + + + +
CG_Test_vol_1Yes002 MBdefault
SQLCluster_QuorumNo000none
UnmappedLunNo000none
VMWARE_LUNNo000none
+
Table 89 - Volume SnapShot Configuration - ISCSI

+

1.6.3.5 Protocol Information

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

1.6.3.5.1 ISCSI Services
The following section provides the ISCSI Service Information on ISCSI.

- - + +
IQN Nameiqn.1992-08.com.netapp:sn.f4084491dfec11ebba75005056b073f8:vs.3
Alias NameSAN
IQN Nameiqn.1992-08.com.netapp:sn.72bb8cb654c211ef9165005056b04618:vs.3
Alias NameISCSI
Tcp Window Size131400
Max Cmds Per Session128
Max Conn Per Session4
Login Timeout15
StatusUp
-
Table 98 - Vserver ISCSI Service Information - SAN

-
1.6.3.5.1.1 ISCSI Interfaces
The following section provides the ISCSI Interface Information on SAN.

+
Table 90 - ISCSI Service - ISCSI

+

ISCSI Interfaces

- - - - -
Interface NameIP AddressPortStatus
ISCSI-A-ZENPR-HQ-01192.168.6.613260Up
ISCSI-A-ZENPR-HQ-02192.168.6.623260Up
ISCSI-B-ZENPR-HQ-01192.168.12.613260Up
ISCSI-B-ZENPR-HQ-02192.168.12.623260Up
-
Table 99 - ISCSI Interface Information - SAN

-
1.6.3.5.2 FCP Services Summary
The following section provides the FCP Service Information on SAN.

- - -
FCP WWNNStatus
20:02:00:50:56:b0:73:f8Up
-
Table 100 - Vserver FCP Service Information - SAN

-
1.6.3.5.2.1 FCP Interface
The following section provides the FCP Interface Information on SAN.

- - - - - -
Interface NameFCP WWPNHome Port
lif_SAN_2420:03:00:50:56:b0:73:f80a
lif_SAN_30020:04:00:50:56:b0:73:f80b
lif_SAN_37820:00:00:50:56:b0:73:f80a
lif_SAN_62220:01:00:50:56:b0:73:f80b
-
Table 101 - FCP Interface Information - SAN

-
1.6.3.5.2.2 FCP Physical Adapter
The following section provides the FCP Physical Adapter Information on SAN.

- - - - - - - - - - - - -
Node NameAdapterProtocolSpeedStatus
ZENPR-HQ-010afibre_channelautoUp
ZENPR-HQ-010bfibre_channelautoUp
ZENPR-HQ-010efibre_channelautoUp
ZENPR-HQ-010ffibre_channelautoUp
ZENPR-HQ-011afibre_channelautoUp
ZENPR-HQ-011bfibre_channelautoUp
ZENPR-HQ-020afibre_channelautoUp
ZENPR-HQ-020bfibre_channelautoUp
ZENPR-HQ-020efibre_channelautoUp
ZENPR-HQ-020ffibre_channelautoUp
ZENPR-HQ-021afibre_channelautoUp
ZENPR-HQ-021bfibre_channelautoUp
-
Table 102 - FCP Physical Adapter Information - ZENPR-HQ

-
1.6.3.5.3 FCP/ISCSI Lun Storage
The following section provides the Lun Storage Information on SAN.

+ + + + +
lif_ISCSI_279192.168.12.103260Up
lif_ISCSI_726192.168.12.113260Up
lif_ISCSI_799192.168.6.113260Up
lif_ISCSI_819192.168.6.103260Up
+
Table 91 - ISCSI Interface - ISCSI

+

ISCSI Client Initiators

+ + + +
Initiator NameTarget Port Group
iqn.1998-01.com.vmware:disaster-01a-16ef0c810e1e282blif_ISCSI_819
iqn.1998-01.com.vmware:disaster-01a-16ef0c810e1e282blif_ISCSI_726
+
Table 92 - ISCSI Client Initiator - ISCSI

+
1.6.3.5.2 Lun Storage
The following section provides the Lun Storage Information on ISCSI.

- - - - - - - - - - + + + + + + + + + + - + - +
Lun NameNTAPSOL_LUN_1
Parent VolumeNTAPSOL_LUN_1
Path/vol/NTAPSOL_LUN_1/NTAPSOL_LUN_1
Serial NumberwOj6c$RRfF7L
Initiator GroupNTAPSOL-01V
Home Node ZENPR-HQ-01
Capacity50 GB
Available49 GB
Used1%
OS Typesolaris_efi
Lun NameCG-Test_lun_1_1
Parent VolumeCG_Test_vol_1
Path/vol/CG_Test_vol_1/CG-Test_lun_1_1
Serial NumberwpEMj]WwN2Yl
Initiator GroupSQLServers
Home Node PHARMAX-HQ-01
Capacity10 GB
Available10 GB
Used0%
OS Typewindows_2008
Is ThinYes
Space AllocationDisabled
Space AllocationEnabled
Space ReservationDisabled
Is MappedYes
StatusDown
StatusUp
-
+
Table 93 - Lun - CG-Test_lun_1_1

- - - - - - - - - - + + + + + + + + + + - + - +
Lun NameOracle_Data_U02
Parent VolumeOracle_Data_Volumes
Path/vol/Oracle_Data_Volumes/Oracle_Data_U02
Serial NumberwOj6b]RPRHX7
Initiator GroupNTAPRHAT-01V
Home Node ZENPR-HQ-01
Capacity50 GB
Available46 GB
Used7%
OS Typelinux
Lun NameCG-Test_lun_1_2
Parent VolumeCG_Test_vol_1
Path/vol/CG_Test_vol_1/CG-Test_lun_1_2
Serial NumberwpEMj]WwN2Ym
Initiator GroupSQLServers
Home Node PHARMAX-HQ-01
Capacity10 GB
Available10 GB
Used0%
OS Typewindows_2008
Is ThinYes
Space AllocationDisabled
Space AllocationEnabled
Space ReservationDisabled
Is MappedYes
StatusDown
StatusUp
-
+
Table 94 - Lun - CG-Test_lun_1_2

- - - - - - - - + + + + + + + + - + - + - +
Lun NameOracle_Data_U03
Parent VolumeOracle_Data_Volumes
Path/vol/Oracle_Data_Volumes/Oracle_Data_U03
Serial NumberwOj6b]RPRHX8
Initiator GroupNTAPRHAT-01V
Home Node ZENPR-HQ-01
Capacity50 GB
Available50 GB
Lun NameSQLCluster_Quorum
Parent VolumeSQLCluster_Quorum
Path/vol/SQLCluster_Quorum/SQLCluster_Quorum
Serial NumberwpEMj]WwN2Yk
Initiator GroupSQLServers
Home Node PHARMAX-HQ-01
Capacity10 GB
Available10 GB
Used0%
OS Typelinux
OS Typewindows_2008
Is ThinYes
Space AllocationDisabled
Space AllocationEnabled
Space ReservationDisabled
Is MappedYes
StatusDown
StatusUp
-
+
Table 95 - Lun - SQLCluster_Quorum

- - - - - - - - + + + + + + + + - + - + - +
Lun NameOracle_Data_U04
Parent VolumeOracle_Data_Volumes
Path/vol/Oracle_Data_Volumes/Oracle_Data_U04
Serial NumberwOj6b]RPRHX9
Initiator GroupNTAPRHAT-01V
Home Node ZENPR-HQ-01
Capacity50 GB
Available50 GB
Lun NameSQLCluster_Quorum_clone_212
Parent VolumeSQLCluster_Quorum
Path/vol/SQLCluster_Quorum/SQLCluster_Quorum_clone_212
Serial NumberwpEMj]WwN2Yn
Initiator GroupSQLServers
Home Node PHARMAX-HQ-01
Capacity10 GB
Available10 GB
Used0%
OS Typelinux
OS Typewindows_2008
Is ThinYes
Space AllocationDisabled
Space AllocationEnabled
Space ReservationDisabled
Is MappedYes
StatusDown
StatusUp
-
+
Table 96 - Lun - SQLCluster_Quorum_clone_212

- - - - - - - - - - - + + + + + + + + + + + - - - + + +
Lun NameSERVER_DATASTORE
Parent VolumeSERVER_DATASTORE
Path/vol/SERVER_DATASTORE/SERVER_DATASTORE
Serial NumberwOj6b]RPRHX5
Initiator GroupRegionA01-COMP-CLUSTER
Home Node ZENPR-HQ-01
Capacity50 GB
Available42 GB
Used17%
OS Typevmware
Is ThinYes
Lun NameUnmappedLun
Parent VolumeUnmappedLun
Path/vol/UnmappedLun/UnmappedLun
Serial NumberwpEMk$WwN3OR
Initiator GroupNone
Home Node PHARMAX-HQ-02
Capacity1 GB
Available1 GB
Used0%
OS Typewindows_2008
Is ThinNo
Space AllocationEnabled
Space ReservationDisabled
Is MappedYes
StatusDown
Space ReservationEnabled
Is MappedNo
StatusUp
-
+
Table 97 - Lun - UnmappedLun

- - - - - - + + + + + + - - - - - + + + + +
Lun NameSERVER_DATASTORE_2_1
Parent VolumeSERVER_DATASTORE_2
Path/vol/SERVER_DATASTORE_2/SERVER_DATASTORE_2_1
Serial NumberwOj6c$RRfF7N
Initiator Group 
Home Node ZENPR-HQ-01
Lun NameVMWARE_LUN
Parent VolumeVMWARE_LUN
Path/vol/VMWARE_LUN/VMWARE_LUN
Serial NumberwpEMj]WwN2Yo
Initiator GroupDisaster
Home Node PHARMAX-HQ-01
Capacity10 GB
Available10 GB
Used0%
OS Typevmware
Is ThinYes
Space AllocationDisabled
Space ReservationDisabled
Is MappedNo
StatusDown
Is ThinNo
Space AllocationEnabled
Space ReservationEnabled
Is MappedYes
StatusUp
-
+
Table 98 - Lun - VMWARE_LUN

+

Igroup Mapping

+ + + + + + + +
Igroup NameDisaster
Typevmware
Protocolmixed
Initiatorsiqn.1998-01.com.vmware:disaster-01a-16ef0c810e1e282b
Mapped LunVMWARE_LUN
Reporting NodesPHARMAX-HQ-01
PHARMAX-HQ-02
+
Table 99 - Igroup - Disaster

- - - - - - + + + + + + +
Lun NameSERVER_DATASTORE_2_2
Parent VolumeSERVER_DATASTORE_2
Path/vol/SERVER_DATASTORE_2/SERVER_DATASTORE_2_2
Serial NumberwOj6c$RRfF7M
Initiator Group 
Home Node ZENPR-HQ-01
Igroup NameSQLServers
Typewindows
Protocolmixed
Initiatorsiqn.1991-05.com.microsoft:server-dc-01v.pharmax.local
Mapped LunCG-Test_lun_1_1
CG-Test_lun_1_2
SQLCluster_Quorum
SQLCluster_Quorum_clone_212
Reporting NodesPHARMAX-HQ-01
PHARMAX-HQ-02
+
Table 100 - Igroup - SQLServers

+

HealthCheck - Non-Mapped Lun Information

The following section provides information of Non Mapped Lun on ISCSI.

+ + +
Volume NameLun NameOnlineMappedLun Format
UnmappedLunUnmappedLunYesNowindows_2008
+
Table 101 - HealthCheck - Non-Mapped Lun - ISCSI

+
1.6.3.5.3 Consistency Groups
The following section provides Consistency Group Information on ISCSI.

+ + +
NameCapacityAvailableUsedReplicatedLun Count
CG-Test21 GB21 GB4 MBNo2
+
Table 102 - Consistency Groups - ISCSI

+

CG-Test Luns

+ + + +
NameCapacityUsedOS TypeVolume StateMappedRead OnlyState
CG-Test_lun_1_110 GB0windows_2008onlineYesNoonline
CG-Test_lun_1_210 GB0windows_2008onlineYesNoonline
+
Table 103 - Consistency Group Luns - CG-Test

+

1.6.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 104 - Information - NFS

+

1.6.4.1 Root Volume

+ + +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
NFS_rootonline20 MB2%19 MBNoPHARMAX_HQ_02_SSD_1
+
Table 105 - Root Volume - NFS

+

1.6.4.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on PHARMAX-HQ.
1.6.4.2.1 Volumes Fixed QoS Policy
+ + + + +
Policy NameMax ThroughputMin ThroughputIs SharedVserver
extreme-fixed50000IOPS,1.53GB/s0NoPHARMAX-HQ
performance-fixed30000IOPS,937.5MB/s0NoPHARMAX-HQ
value-fixed15000IOPS,468.8MB/s0NoPHARMAX-HQ
+
Table 106 - Volume Fixed QoS Group - PHARMAX-HQ

+
1.6.4.2.2 Volumes Adaptive QoS Policy
+ + + + +
Policy NamePeak IopsExpected IopsMin IopsVserver
extreme12288IOPS/TB6144IOPS/TB1000IOPSPHARMAX-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSPHARMAX-HQ
value512IOPS/TB128IOPS/TB75IOPSPHARMAX-HQ
+
Table 107 - Volume Adaptive QoS Group - PHARMAX-HQ

+

1.6.4.3 Storage Volumes

+ + + +
VolumeStatusCapacityAvailableUsedAggregate
VMWARE_DATASTOREonline53 GB50 GB0% 
VMWARE_DATASTORE__0001online53 GB50 GB0%PHARMAX_HQ_02_SSD_1
+
Table 108 - Volume - NFS

+
1.6.4.3.1 Per Volumes QoS Policy
+ + +
VolumeFixed Policy NameAdaptive Policy Name
VMWARE_DATASTOREperformance-fixedNone
+
Table 109 - Volume QoS - NFS

+
1.6.4.3.2 FlexGroup Volumes
+ + +
VolumeStatusCapacity
VMWARE_DATASTOREonline53 GB
+
Table 110 - Flexgroup Volume - NFS

+

1.6.4.4 Volumes Snapshot Configuration

+ + + +
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
VMWARE_DATASTOREYes3 GB3 GB924 KBdefault
VMWARE_DATASTORE__0001Yes3 GB3 GB924 KBdefault
+
Table 111 - Volume SnapShot Configuration - NFS

+

1.6.4.5 Export Policy

+ + +
Policy NameRule IndexClient MatchProtocolRo RuleRw Rule
VMWARE_DATASTORE1dataanyanyany
+
Table 112 - Volume Export Policy - NFS

+

1.6.4.6 Protocol Information

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

1.6.4.6.1 NFS Services
The following section provides the NFS Service Information on NFS.

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

+

NFS Options

+ + + + + + + + + + + + + + +
Allow Idle Connection-
Idle Connection Timeout360
Ignore NtAcl For RootNo
Enable EjukeboxYes
Nfs Access EnabledYes
Nfs Rootonly EnabledNo
Nfsv2 EnabledNo
Nfsv3 EnabledYes
Nfsv3 64bit Identifiers EnabledNo
Nfsv3 Connection Drop EnabledYes
Nfsv3 Fsid Change EnabledYes
Nfsv40 Acl EnabledNo
Nfsv40 EnabledYes
+
Table 114 - NFS Service Options - NFS

+

NFS Volume Export

+ + +
VserverPath Name
NFS/vol/VMWARE_DATASTORE
+
Table 115 - NFS Service Volume Export - NFS

+

1.6.5 NVME Vserver Configuration

The following section provides the configuration of the vserver NVME.

+ + +
Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifs fcp iscsi ndmp nvme s3 Defaultrunning
+
Table 116 - Information - NVME

+

1.6.5.1 Root Volume

+ + +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
NVME_rootonline20 MB2%19 MBYesPHARMAX_HQ_02_SSD_1
+
Table 117 - Root Volume - NVME

+

1.6.5.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on PHARMAX-HQ.
1.6.5.2.1 Volumes Fixed QoS Policy
+ + + + +
Policy NameMax ThroughputMin ThroughputIs SharedVserver
extreme-fixed50000IOPS,1.53GB/s0NoPHARMAX-HQ
performance-fixed30000IOPS,937.5MB/s0NoPHARMAX-HQ
value-fixed15000IOPS,468.8MB/s0NoPHARMAX-HQ
+
Table 118 - Volume Fixed QoS Group - PHARMAX-HQ

+
1.6.5.2.2 Volumes Adaptive QoS Policy
+ + + + +
Policy NamePeak IopsExpected IopsMin IopsVserver
extreme12288IOPS/TB6144IOPS/TB1000IOPSPHARMAX-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSPHARMAX-HQ
value512IOPS/TB128IOPS/TB75IOPSPHARMAX-HQ
+
Table 119 - Volume Adaptive QoS Group - PHARMAX-HQ

+

1.6.5.3 Storage Volumes

+ + + +
VolumeStatusCapacityAvailableUsedAggregate
DBonline23 GB2 GB89%PHARMAX_HQ_02_SSD_1
VMWARE_NVMEonline1 GB69 MB92%PHARMAX_HQ_01_SSD_1
+
Table 120 - Volume - NVME

+
1.6.5.3.1 Per Volumes QoS Policy
+ + + +
VolumeFixed Policy NameAdaptive Policy Name
DBperformance-fixedNone
VMWARE_NVMENoneNone
+
Table 121 - Volume QoS - NVME

+

1.6.5.4 Volumes Snapshot Configuration

+ + + +
VolumeSnapshot EnabledReserve SizeReserve AvailableUsedPolicy
DBNo0018 MBnone
VMWARE_NVMEYes51 MB51 MB0default
+
Table 122 - Volume SnapShot Configuration - NVME

+

1.6.5.5 Protocol Information

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

1.6.5.5.1 Nvme Services Information
The following section provides the Nvme Service Information on NVME.

Nvme FC Physical Adapter

+ + + + + +
Node NameAdapterProtocolWWNNWWPNStatus
PHARMAX-HQ-011bfibre_channel20:05:00:50:56:b0:03:d320:06:00:50:56:b0:03:d3Up
PHARMAX-HQ-011afibre_channel20:05:00:50:56:b0:03:d320:07:00:50:56:b0:03:d3Up
PHARMAX-HQ-021afibre_channel20:05:00:50:56:b0:03:d320:08:00:50:56:b0:03:d3Up
PHARMAX-HQ-021bfibre_channel20:05:00:50:56:b0:03:d320:09:00:50:56:b0:03:d3Up
+
Table 123 - Nvme FC Physical Adapter - NVME

+

Nvme TCP Physical Adapter

+ + + + + +
Node NameAdapterProtocolIP AddressStatus
PHARMAX-HQ-01a0a-12ethernet192.168.12.13Up
PHARMAX-HQ-01a0a-6ethernet192.168.6.13Up
PHARMAX-HQ-02a0a-12ethernet192.168.12.12Up
PHARMAX-HQ-02a0a-6ethernet192.168.6.12Up
+
Table 124 - Nvme TCP Physical Adapter - NVME

+

NVME Interfaces

+ + + + + + + + + +
Interface NameTransport AddressTransport ProtocolsStatus
lif_NVME_271nn-0x2005005056b003d3:pn-0x2006005056b003d3fc_nvmeUp
lif_NVME_956nn-0x2005005056b003d3:pn-0x2008005056b003d3fc_nvmeUp
lif_NVME_457nn-0x2005005056b003d3:pn-0x2009005056b003d3fc_nvmeUp
lif_NVME_15nn-0x2005005056b003d3:pn-0x2007005056b003d3fc_nvmeUp
lif_NVME_907192.168.12.12nvme_tcpUp
lif_NVME_130192.168.6.12nvme_tcpUp
lif_NVME_567192.168.6.13nvme_tcpUp
lif_NVME_599192.168.12.13nvme_tcpUp
+
Table 125 - NVME Interface - NVME

+
1.6.5.5.2 Namespace Storage
The following section provides the Namespace Storage Information on NVME.

+ + + + + + + - + - - - - - + + +
Namespace NameDB_1
Parent VolumeDB
Path/vol/DB/DB_1
Serial Number0cdbbe9b-6246-4ccd-b785-b915fa383989
Subsystem MapDisaster-01a
Home Node PHARMAX-HQ-02
Capacity10 GB
Available10 GB
Used0%
Used1%
OS Typevmware
Is ThinYes
Space AllocationDisabled
Space ReservationDisabled
Is MappedNo
StatusDown
Is MappedYes
ReadOnlyNo
StatusUp
-
+
Table 126 - Namespace - DB_1

- - - - - - - - + + + + + + + + - - - - + +
Lun NameSERVER_DATASTORE_DR
Parent VolumeSERVER_DATASTORE_DR_dest
Path/vol/SERVER_DATASTORE_DR_dest/SERVER_DATASTORE_DR
Serial NumberwOj6b]RPRHXO
Initiator Group 
Home Node ZENPR-HQ-01
Capacity50 GB
Available50 GB
Namespace NameDB_2
Parent VolumeDB
Path/vol/DB/DB_2
Serial Number2993f335-f3cc-4ec1-a7ce-bef0ee98450a
Subsystem MapDisaster-01a
Home Node PHARMAX-HQ-02
Capacity10 GB
Available10 GB
Used1%
OS Typevmware
Is ThinYes
Space AllocationDisabled
Space ReservationDisabled
Is MappedNo
Is MappedYes
ReadOnlyNo
StatusUp
-
+
Table 127 - Namespace - DB_2

- - - - - - - - + + + + + + + + - - - - + +
Lun NameSRM_PlaceHolder_DR
Parent VolumeSRM_PlaceHolder_DR_dest
Path/vol/SRM_PlaceHolder_DR_dest/SRM_PlaceHolder_DR
Serial NumberwOj6b]RPRHXP
Initiator Group 
Home Node ZENPR-HQ-01
Capacity10 GB
Available10 GB
Namespace NameVMWARE_NVME_01
Parent VolumeVMWARE_NVME
Path/vol/VMWARE_NVME/VMWARE_NVME_01
Serial Numberbd458b08-6be0-4813-9a9a-9b651f050f94
Subsystem MapNone
Home Node PHARMAX-HQ-01
Capacity900 MB
Available900 MB
Used0%
OS Typevmware
Is ThinYes
Space AllocationDisabled
Space ReservationDisabled
Is MappedNo
Is MappedNo
ReadOnlyNo
StatusUp
-
-
+
Table 128 - Namespace - VMWARE_NVME_01

+

Subsystem Mapping

- - - - - - - - - - - - - - - + + + + + +
Lun NameTEST
Parent VolumeTEST
Path/vol/TEST/TEST
Serial NumberwOj6b]RPRHXR
Initiator GroupTEST
Home Node ZENPR-HQ-01
Capacity20 GB
Available6 GB
Used72%
OS Typewindows_2008
Is ThinYes
Space AllocationEnabled
Space ReservationDisabled
Is MappedYes
StatusDown
Subsystem NameDisaster-01a
Typevmware
Target NQNnqn.1992-08.com.netapp:sn.974e1a1954c211ef9165005056b04618:subsystem.Disaster-01a
Host NQN 
Mapped NamespaceDB_1
DB_2
+
Table 129 - Subsystem - Disaster-01a

+

HealthCheck - Non-Mapped Namespace Information

The following table provides information about Non Mapped Namespace on NVME.

+ + +
Volume NameLun NameTypeMappedState
VMWARE_NVMEVMWARE_NVME_01vmwareNoonline
+
Table 130 - HealthCheck - Non-Mapped Namespace - NVME

+
1.6.5.5.3 Consistency Groups
The following section provides Consistency Group Information on NVME.

+ + +
NameCapacityAvailableUsedReplicatedLun Count
DBCG23 GB2 GB20 GBYes-
+
Table 131 - Consistency Groups - NVME

+

DBCG Namespaces

+ + + +
NameCapacityUsedOS TypeVolume StateMappedRead OnlyState
DB_110 GB69 MBvmwareonlineYesNoonline
DB_210 GB113 MBvmwareonlineYesNoonline
+
Table 132 - Consistency Group Namespace - DBCG

+

1.6.6 ObjectS3 Vserver Configuration

The following section provides the configuration of the vserver ObjectS3.

+ +
Vserver TypeAllowed ProtocolsDisallowed ProtocolsIPSpaceStatus
datanfs cifs fcp iscsi ndmp s3nvmeDefaultrunning
-
-
1.6.3.5.3.1 Igroup Mapping
The following section provides the Igroup Mapping Information on SAN.

- - - - - - - +
Table 133 - Information - ObjectS3

+

1.6.6.1 Root Volume

Igroup NameNTAPRHAT-01V
Typelinux
Protocolmixed
Initiatorsiqn.1994-05.com.redhat:abdab89e83c7
Mapped LunOracle_Data_U02
Oracle_Data_U03
Oracle_Data_U04
Reporting NodesZENPR-HQ-01
ZENPR-HQ-02
+ +
Root VolumeStatusTotal SizeUsedAvailableDedupAggregate
ObjectS3_rootonline20 MB2%18 MBNoPHARMAX_HQ_02_SSD_1
-
-
- - - - - - - +
Table 134 - Root Volume - ObjectS3

+

1.6.6.2 Volumes QoS Policy

The following section provides the Vserver QoS Configuration on PHARMAX-HQ.
1.6.6.2.1 Volumes Fixed QoS Policy
Igroup NameNTAPSOL-01V
Typesolaris
Protocolmixed
Initiatorsiqn.1986-03.com.sun:01:2845eacc1fae.60bbfa60
Mapped LunNTAPSOL_LUN_1
Reporting NodesZENPR-HQ-01
ZENPR-HQ-02
+ + + +
Policy NameMax ThroughputMin ThroughputIs SharedVserver
extreme-fixed50000IOPS,1.53GB/s0NoPHARMAX-HQ
performance-fixed30000IOPS,937.5MB/s0NoPHARMAX-HQ
value-fixed15000IOPS,468.8MB/s0NoPHARMAX-HQ
-
-
- - - - - - - +
Table 135 - Volume Fixed QoS Group - PHARMAX-HQ

+
1.6.6.2.2 Volumes Adaptive QoS Policy
Igroup NameRegionA01-COMP-CLUSTER
Typevmware
Protocolmixed
Initiatorsiqn.1998-01.com.vmware:comp-01a-2581ec1ed06134af
iqn.1998-01.com.vmware:comp-02a-2c120275e45e175a
Mapped LunSERVER_DATASTORE
Reporting NodesZENPR-HQ-01
ZENPR-HQ-02
+ + + +
Policy NamePeak IopsExpected IopsMin IopsVserver
extreme12288IOPS/TB6144IOPS/TB1000IOPSPHARMAX-HQ
performance4096IOPS/TB2048IOPS/TB500IOPSPHARMAX-HQ
value512IOPS/TB128IOPS/TB75IOPSPHARMAX-HQ
-
-
- - - - - - - +
Table 136 - Volume Adaptive QoS Group - PHARMAX-HQ

+

1.6.6.3 Storage Volumes

Igroup NameTEST
Typewindows
Protocolmixed
Initiatorsiqn.1991-05.com.microsoft:ntapwin-01v.zenpr.local
Mapped LunTEST
Reporting NodesZENPR-HQ-01
ZENPR-HQ-02
+ + +
VolumeStatusCapacityAvailableUsedAggregate
fg_oss_1723056019online105 GB32 GB0% 
fg_oss_1723056019__0001online105 GB32 GB0%PHARMAX_HQ_02_SSD_1
-
-
1.6.3.5.3.2 HealthCheck - Non-Mapped Lun Information
The following section provides information of Non Mapped Lun on SAN.

- - - - - +
Table 137 - Volume - ObjectS3

+
1.6.6.3.1 FlexGroup Volumes
Volume NameLun NameOnlineMappedLun Format
SERVER_DATASTORE_2SERVER_DATASTORE_2_1NoNovmware
SERVER_DATASTORE_2SERVER_DATASTORE_2_2NoNovmware
SERVER_DATASTORE_DR_destSERVER_DATASTORE_DRYesNovmware
SRM_PlaceHolder_DR_destSRM_PlaceHolder_DRYesNovmware
+ + +
VolumeStatusCapacity
fg_oss_1723056019online105 GB
+
Table 138 - Flexgroup Volume - ObjectS3

+

1.6.6.4 Qtrees

+ + +
QtreeVolumeStatusSecurity StyleExport Policy
veeamdatafg_oss_1723056019normalunixdefault
+
Table 139 - Volume Qtree - ObjectS3

+

1.6.6.5 Protocol Information

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

1.6.6.5.1 S3 Services Configuration Information
The following section provides the S3 Service Information on ObjectS3.

+ +
HTTPHTTP PortHTTPSHTTPS PortStatus
Yes80Yes443UP
-
Table 103 - HealthCheck - Non-Mapped Lun - SAN

-

1.7 Replication Summary

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

1.7.1 Cluster Peer

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

+
Table 140 - S3 Service - ObjectS3

+

S3 Buckets

+ + +
BucketVolumeTotalUsed
veeamdatafg_oss_1723056019100 GB0
+
Table 141 - S3 Bucket - ObjectS3

+

1.7 Replication Information

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

1.7.1 Cluster Peer

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

- - +
Cluster PeerCluster NodesPeer AddressesCluster HealthIP SpaceStatus
ONTAP-EDGE 192.168.11.221 DefaultUNAVAILABLE
ZENPR-DR 10.10.36.14
10.10.36.15
 DefaultUNAVAILABLE
PHARMAX-DRPHARMAX-DR-0110.10.36.10TrueDefaultAVAILABLE
-
Table 104 - Replication - Cluster Peer Information - ZENPR-HQ

-

1.7.2 Vserver Peer

The following section provides the Vserver Peer information on ZENPR-HQ.

+
Table 142 - Cluster Peer - PHARMAX-HQ

+

1.7.2 Vserver Peer

- - - - - -
VserverPeer VserverPeer ClusterApplicationsPeer State
NASNAS-DRZENPR-DRflexcachepeered
NASNAS-HQONTAP-EDGEsnapmirrorpeered
NASSAN-DRZENPR-DRsnapmirror
flexcache
peered
NFSSAN-DRZENPR-DRsnapmirror
flexcache
pending
SANSAN-DRZENPR-DRsnapmirrorpeered
-
Table 105 - Replication - Vserver Peer Information - ZENPR-HQ

-

1.7.2.1 SnapMirror Relationship

The following section provides the SnapMirror Relationship information on ZENPR-HQ.

- - - - - - - - - - - - - + +
Source VserverNAS-HQ
Source LocationNAS-HQ:vol_19082021_201759_59
Destination VserverNAS
Destination LocationNAS:vol_19082021_201759_59_dest
Mirror Statesnapmirrored
ScheduleHOURLY
Relationship TypeXDP
PolicyMirrorAndVault
Policy Typemirror_vault
Unhealthy ReasonTransfer failed.
Lag Time83 days, 21 hrs, 49 mins, 83 secs
StatusIDLE
CIFSFileProtocolPHARMAX-DRsnapmirror
flexcache
peered
NVMENVME-DRPHARMAX-DRsnapmirror
flexcache
peered
-
-
+
Table 143 - Peer - PHARMAX-HQ

+

1.7.2.1 SnapMirror Destinations

- - - - - - + + + + - - -
Source VserverSAN-DR
Source LocationSAN-DR:SERVER_DATASTORE_DR
Destination VserverSAN
Destination LocationSAN:SERVER_DATASTORE_DR_dest
Mirror Statesnapmirrored
ScheduleHOURLY
Destination VserverNVME-DR
Destination LocationNVME-DR:/cg/DBCG_dest
Source VserverNVME
Source LocationNVME:/cg/DBCG
Relationship TypeXDP
PolicyAsynchronous
Policy Typemirror_vault
Unhealthy ReasonTransfer failed.
Lag Time2 days, 23 hrs, 49 mins, 2 secs
StatusIDLE
-
+
Table 144 - SnapMirror Destination (List-Destinations) - NVME-DR:/cg/DBCG_dest

- - - - - - + + + + - - -
Source VserverSAN-DR
Source LocationSAN-DR:SRM_PlaceHolder_DR
Destination VserverSAN
Destination LocationSAN:SRM_PlaceHolder_DR_dest
Mirror Statesnapmirrored
ScheduleHOURLY
Destination VserverNVME-DR
Destination LocationNVME-DR:DB_dest
Source VserverNVME
Source LocationNVME:DB
Relationship TypeXDP
PolicyAsynchronous
Policy Typemirror_vault
Unhealthy ReasonTransfer failed.
Lag Time2 days, 23 hrs, 49 mins, 2 secs
StatusIDLE
-
-
1.7.2.1.1 SnapMirror Replication History
The following section provides the SnapMirror Operation information on ZENPR-HQ.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Source LocationDestination LocationOperation TypeResultStart
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 11:37:03
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 11:37:03
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 11:37:03
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 12:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 12:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 12:05:00
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 13:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 13:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 13:05:00
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 14:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 14:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 14:05:00
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 15:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 15:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 15:05:00
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 16:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 16:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 16:05:00
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 17:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 17:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 17:05:00
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 18:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 18:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 18:05:00
NAS-HQ:vol_19082021_201759_59NAS:vol_19082021_201759_59_destscheduled_updatefailure11/24/2021 19:05:00
SAN-DR:SERVER_DATASTORE_DRSAN:SERVER_DATASTORE_DR_destscheduled_updatefailure11/24/2021 19:05:00
SAN-DR:SRM_PlaceHolder_DRSAN:SRM_PlaceHolder_DR_destscheduled_updatefailure11/24/2021 19:05:00
-
Table 106 - Replication - SnapMirror Replication History Information - ZENPR-HQ

-

1.7.2.2 SnapMirror Destinations

The following section provides the SnapMirror (List-Destination) information on ZENPR-HQ.

- - - - - - - - -
Destination VserverSAN-DR
Destination LocationSAN-DR:Oracle_Data_Volumes_dest
Source VserverSAN
Source LocationSAN:Oracle_Data_Volumes
Relationship TypeXDP
Policy Typemirror_vault
StatusUnknown
-
-
- - - - - - - - -
Destination VserverSAN-DR
Destination LocationSAN-DR:vol_SERVER_DATASTORE_dest
Source VserverSAN
Source LocationSAN:SERVER_DATASTORE
Relationship TypeXDP
Policy Typemirror_vault
StatusUnknown
-
-

1.7.2.3 Ontap Mediator

The following section provides the SnapMirror Mediator information on ZENPR-HQ.

- - -
Peer clusterIP AddressportStatus
ZENPR-DR192.168.6.1631784Unreachable
-
Table 107 - Replication - SnapMirror Mediator Information - ZENPR-HQ

-

1.8 Efficiency Summary

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

+
Table 145 - SnapMirror Destination (List-Destinations) - NVME-DR:DB_dest

+

1.8 Efficiency Information

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

- - + +
AggregateUsed %Capacity Tier UsedCompaction Saved %Deduplication Saved %Total Data Reduction
PHARMAX_HQ_01_SSD_118%2.5 GB2%2%4.40:1
PHARMAX_HQ_02_SSD_10%00%0%1.00:1
PHARMAX_HQ_01_SSD_139%00%0%1.80:1
PHARMAX_HQ_02_SSD_163%00%0%16.87:1
-
Table 108 - Storage Efficiency Savings Information - ZENPR-HQ

-

1.8.1 Aggregate Total Efficiency

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

+
Table 146 - Storage Efficiency Savings - PHARMAX-HQ

+

1.8.1 Aggregate Total Efficiency

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

- - + +
AggregateLogical UsedPhysical UsedCompaction SavedData Reduction
PHARMAX_HQ_01_SSD_140 GB39 GB748 MB1.02:1
PHARMAX_HQ_02_SSD_179 MB79 MB01.00:1
PHARMAX_HQ_01_SSD_1170 MB170 MB01.00:1
PHARMAX_HQ_02_SSD_190 MB90 MB01.00:1
-
Table 109 - Aggregate Efficiency Savings Information - ZENPR-HQ

-

1.8.1.1 HealthCheck - Volume without deduplication enabled

The following section provides the Volume efficiency healthcheck Information on ZENPR-HQ.

+
Table 147 - Aggregate Efficiency Savings - PHARMAX-HQ

+

1.8.1.1 HealthCheck - Volume with Disabled Deduplication

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

- - + +
AggregateVolumes without Deduplication
PHARMAX_HQ_01_SSD_1 
PHARMAX_HQ_02_SSD_1fg_oss_1630605744__0001
fg_oss_1630605744__0002
PHARMAX_HQ_01_SSD_1FlexGroup__0003, FlexGroup__0005, FlexGroup__0006, CG_Test_vol_1, VMWARE_LUN, VMWARE_NVME
PHARMAX_HQ_02_SSD_1FlexGroup__0001, FlexGroup__0002, FlexGroup__0004, UnmappedLun, VMWARE_DATASTORE__0001, fg_oss_1723056019__0001
-
Table 110 - HealthCheck - Volume without deduplication - ZENPR-HQ

-

1.8.1.2 NAS Vserver Volume Deduplication

The following section provides the Volume Deduplication Summary on NAS.

+
Table 148 - HealthCheck - Volume without deduplication - PHARMAX-HQ

+

1.8.1.2 CIFS Vserver Volume Deduplication

- - - - - - - - - - - - -
VolumeStateStatusSchedule Or PolicyProgress
DATAEnabledidledefault 
DATA__0001EnabledidledefaultIdle for 08:19:17
DATA_clone_299Enabledidledefault 
DATA_clone_299__0001EnabledidledefaultIdle for 08:19:17
fg_oss_1630605678Enabledidledefault 
fg_oss_1630605678__0001EnabledidledefaultIdle for 08:19:17
fg_oss_1630605678__0002EnabledidledefaultIdle for 08:19:17
NAS_rootEnabledidledefaultIdle for 08:19:17
SNAPLOCK_CPEnabledidledefaultIdle for 08:19:17
SNAPLOCK_ENTEnabledidledefaultIdle for 08:19:17
vol_19082021_201759_59_destEnabledidledefaultIdle for 71:42:39
vol_19082021_201759_59_dest_clone_652EnabledidledefaultIdle for 08:19:17
-
Table 111 - Volume Deduplication Information - NAS

-
1.8.1.2.1 Volume Efficiency
The following section provides the Volume Efficiency Saving Detailed information on NAS.

+ + + + + + +
CIFS_rootEnabledidlesun-sat@0Idle for 48:51:25
DATAEnabledidlesun-sat@0Idle for 48:51:23
DATA_clone_100Enabledidlesun-sat@0Idle for 48:51:23
FlexGoupVolEnabledidlesun-sat@0-
FlexGoupVol__0001Enabledidlesun-sat@0Idle for 48:51:22
FlexGoupVol__0002Enabledidlesun-sat@0Idle for 48:51:22
+
Table 149 - Volume Deduplication - CIFS

+
1.8.1.2.1 Volume Efficiency
- - - - - - - - - - - - -
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
DATA100 GB3 GB03 GB5 GB5.2%
DATA__0001100 GB3 GB42 MB3 GB5 GB5.2%
DATA_clone_299100 GB3 GB05 GB8 GB7.6%
DATA_clone_299__0001100 GB3 GB55 MB5 GB8 GB7.6%
fg_oss_1630605678800 GB115 MB00115 MB0.0%
fg_oss_1630605678__0001400 GB58 MB0058 MB0.0%
fg_oss_1630605678__0002400 GB58 MB0058 MB0.0%
NAS_root19 MB1 MB2 MB146 KB1 MB7.2%
SNAPLOCK_CP10 GB724 KB2 MB471 KB1 MB0.0%
SNAPLOCK_ENT10 GB688 KB2 MB435 KB1 MB0.0%
vol_19082021_201759_59_dest5 GB5 GB5 GB04 GB76.7%
vol_19082021_201759_59_dest_clone_6525 GB5 GB010 MB5 GB82.4%
-
Table 112 - Volume Efficiency Savings Information - NAS

-
1.8.1.2.2 Detailed Volume Efficiency
The following section provides the Volume Efficiency Saving Detailed information on NAS.

+ + + + + + + + + + + + + +
CIFS_root19 MB588 KB1 MB172 KB760 KB3.9%
DATA10 GB7 MB2 MB7 MB14 MB0.1%
DATA_clone_10010 GB7 MB2 MB7 MB14 MB0.1%
FlexGoupVol100 GB131 MB0131 MB262 MB0.3%
FlexGoupVol__000150 GB65 MB9 MB63 MB128 MB0.3%
FlexGoupVol__000250 GB66 MB8 MB65 MB131 MB0.3%
FlexGroup53 GB194 MB00194 MB0.4%
FlexGroup__00019 GB32 MB0032 MB0.4%
FlexGroup__00029 GB32 MB0032 MB0.4%
FlexGroup__00039 GB32 MB0032 MB0.4%
FlexGroup__00049 GB32 MB0032 MB0.4%
FlexGroup__00059 GB32 MB0032 MB0.4%
FlexGroup__00069 GB32 MB0032 MB0.4%
+
Table 150 - Volume Efficiency Savings - CIFS

+
1.8.1.2.2 Detailed Volume Efficiency
- - - - - - - - - - - -
VolumeCapacityDedupe SavingsCompression SavingsSnapshot SavingsCloning SavingsEfficiency %Efficiency % w/o Snapshots
DATA100 GB2 MB2 MB3 GB05.2%0.0%
DATA__0001100 GB2 MB2 MB3 GB05.2%0.0%
DATA_clone_299100 GB12 KB236 KB3 GB3 GB7.6%0.0%
DATA_clone_299__0001100 GB12 KB236 KB3 GB3 GB7.6%0.0%
fg_oss_1630605678800 GB00000.0%0.0%
fg_oss_1630605678__0001400 GB00000.0%0.0%
fg_oss_1630605678__0002400 GB00000.0%0.0%
SNAPLOCK_CP10 GB00471 KB00.0%0.0%
SNAPLOCK_ENT10 GB00435 KB00.0%0.0%
vol_19082021_201759_59_dest5 GB4 KB1 MB0076.7%0.0%
vol_19082021_201759_59_dest_clone_6525 GB5 MB5 MB0082.4%0.0%
-
Table 113 - Volume Efficiency Savings Detailed Information - NAS

-

1.8.1.3 NFS Vserver Volume Deduplication

The following section provides the Volume Deduplication Summary on NFS.

+ + + + + + + + + + + + +
DATA10 GB60 KB07 MB00.1%1.0%
DATA_clone_10010 GB60 KB07 MB00.1%1.0%
FlexGoupVol100 GB00131 MB00.3%0.0%
FlexGoupVol__000150 GB0063 MB00.3%0.0%
FlexGoupVol__000250 GB0065 MB00.3%0.0%
FlexGroup53 GB00000.4%0.0%
FlexGroup__00019 GB00000.4%0.0%
FlexGroup__00029 GB00000.4%0.0%
FlexGroup__00039 GB00000.4%0.0%
FlexGroup__00049 GB00000.4%0.0%
FlexGroup__00059 GB00000.4%0.0%
FlexGroup__00069 GB00000.4%0.0%
+
Table 151 - Volume Efficiency Savings Detailed - CIFS

+

1.8.1.3 FCSAN Vserver Volume Deduplication

- - - - - - - - -
VolumeStateStatusSchedule Or PolicyProgress
fg_oss_1630340493Enabledidledefault 
fg_oss_1630340493__0001EnabledidledefaultIdle for 08:20:13
fg_oss_1630340493__0002EnabledidledefaultIdle for 08:20:13
fg_oss_1630605744Disabledidle- 
fg_oss_1630605744__0001Disabledidle Idle for 00:00:00
fg_oss_1630605744__0002Disabledidle Idle for 00:00:00
NFS_rootEnabledidledefaultIdle for 08:20:13
SHARE_NFSEnabledidledefaultIdle for 08:20:13
-
Table 114 - Volume Deduplication Information - NFS

-
1.8.1.3.1 Volume Efficiency
The following section provides the Volume Efficiency Saving Detailed information on NFS.

+ + +
EXchangeEnabledidlesun-sat@0Idle for 48:51:21
FCSAN_rootEnabledidlesun-sat@0Idle for 48:51:20
+
Table 152 - Volume Deduplication - FCSAN

+
1.8.1.3.1 Volume Efficiency
- - - - - - - - -
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
fg_oss_1630340493800 GB115 MB00115 MB0.0%
fg_oss_1630340493__0001400 GB58 MB0058 MB0.0%
fg_oss_1630340493__0002400 GB58 MB0058 MB0.0%
fg_oss_1630605744800 GB58 MB0058 MB0.0%
fg_oss_1630605744__0001400 GB29 MB0029 MB0.0%
fg_oss_1630605744__0002400 GB29 MB0029 MB0.0%
NFS_root19 MB2 MB2 MB284 KB2 MB10.3%
SHARE_NFS1 GB504 KB3 MB202 KB706 KB0.1%
-
Table 115 - Volume Efficiency Savings Information - NFS

-
1.8.1.3.2 Detailed Volume Efficiency
The following section provides the Volume Efficiency Saving Detailed information on NFS.

+ + +
EXchange12 GB440 KB00440 KB0.0%
FCSAN_root19 MB400 KB1 MB173 KB573 KB2.9%
+
Table 153 - Volume Efficiency Savings - FCSAN

+
1.8.1.3.2 Detailed Volume Efficiency
- - - - - - - -
VolumeCapacityDedupe SavingsCompression SavingsSnapshot SavingsCloning SavingsEfficiency %Efficiency % w/o Snapshots
fg_oss_1630340493800 GB00000.0%0.0%
fg_oss_1630340493__0001400 GB00000.0%0.0%
fg_oss_1630340493__0002400 GB00000.0%0.0%
fg_oss_1630605744800 GB00000.0%0.0%
fg_oss_1630605744__0001400 GB00000.0%0.0%
fg_oss_1630605744__0002400 GB00000.0%0.0%
SHARE_NFS1 GB00202 KB00.1%0.0%
-
Table 116 - Volume Efficiency Savings Detailed Information - NFS

-

1.8.1.4 SAN Vserver Volume Deduplication

The following section provides the Volume Deduplication Summary on SAN.

+ +
EXchange12 GB00000.0%0.0%
+
Table 154 - Volume Efficiency Savings Detailed - FCSAN

+

1.8.1.4 ISCSI Vserver Volume Deduplication

- - - - - - - - -
VolumeStateStatusSchedule Or PolicyProgress
NTAPSOL_LUN_1EnabledidledefaultIdle for 08:20:43
Oracle_Data_VolumesEnabledidledefaultIdle for 08:20:43
SAN_rootEnabledidledefaultIdle for 08:20:43
SERVER_DATASTOREEnabledidledefaultIdle for 08:20:43
SERVER_DATASTORE_2EnabledidledefaultIdle for 08:20:43
SERVER_DATASTORE_DR_destEnabledidledefaultIdle for 71:42:59
SRM_PlaceHolder_DR_destEnabledidledefaultIdle for 71:43:44
TESTEnabledidledefaultIdle for 08:20:43
-
Table 117 - Volume Deduplication Information - SAN

-
1.8.1.4.1 Volume Efficiency
The following section provides the Volume Efficiency Saving Detailed information on SAN.

+ + +
ISCSI_rootEnabledidlesun-sat@0Idle for 48:51:21
SQLCluster_QuorumEnabledidlesun-sat@0Idle for 48:51:21
+
Table 155 - Volume Deduplication - ISCSI

+
1.8.1.4.1 Volume Efficiency
+ + + + + + +
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
CG_Test_vol_121 GB4 MB2 MB2 MB6 MB0.0%
ISCSI_root19 MB588 KB1 MB172 KB760 KB3.9%
SQLCluster_Quorum12 GB540 KB00540 KB0.0%
UnmappedLun1 GB1 GB001 GB84.2%
VMWARE_LUN12 GB10 GB0010 GB85.0%
+
Table 156 - Volume Efficiency Savings - ISCSI

+
1.8.1.4.2 Detailed Volume Efficiency
+ + + + + +
VolumeCapacityDedupe SavingsCompression SavingsSnapshot SavingsCloning SavingsEfficiency %Efficiency % w/o Snapshots
CG_Test_vol_121 GB002 MB00.0%0.0%
SQLCluster_Quorum12 GB00000.0%0.0%
UnmappedLun1 GB000084.2%0.0%
VMWARE_LUN12 GB000085.0%0.0%
+
Table 157 - Volume Efficiency Savings Detailed - ISCSI

+

1.8.1.5 NFS Vserver Volume Deduplication

1.8.1.5.1 Volume Efficiency
- - - - - - - - -
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
NTAPSOL_LUN_150 GB184 MB170 MB582 MB766 MB1.5%
Oracle_Data_Volumes240 GB2 GB3 GB3 GB5 GB2.1%
SAN_root19 MB1 MB2 MB126 KB1 MB6.8%
SERVER_DATASTORE15 GB9 GB5 GB6 GB15 GB100.6%
SERVER_DATASTORE_220 GB676 KB00676 KB0.0%
SERVER_DATASTORE_DR_dest300 MB234 MB4 MB332 MB566 MB188.4%
SRM_PlaceHolder_DR_dest122 MB6 MB500 KB47 MB53 MB43.6%
TEST20 GB14 GB0210 MB14 GB71.7%
-
Table 118 - Volume Efficiency Savings Information - SAN

-
1.8.1.4.2 Detailed Volume Efficiency
The following section provides the Volume Efficiency Saving Detailed information on SAN.

+ + + +
NFS_root19 MB484 KB1 MB299 KB783 KB4.0%
VMWARE_DATASTORE50 GB66 MB066 MB131 MB0.3%
VMWARE_DATASTORE__000150 GB66 MB924 KB65 MB131 MB0.3%
+
Table 158 - Volume Efficiency Savings - NFS

+
1.8.1.5.2 Detailed Volume Efficiency
- - - - - - - -
VolumeCapacityDedupe SavingsCompression SavingsSnapshot SavingsCloning SavingsEfficiency %Efficiency % w/o Snapshots
NTAPSOL_LUN_150 GB366 MB371 MB001.5%80.0%
Oracle_Data_Volumes240 GB470 MB1 GB2 GB02.1%53.0%
SERVER_DATASTORE15 GB2 GB2 GB2 GB0100.6%30.0%
SERVER_DATASTORE_220 GB00000.0%0.0%
SERVER_DATASTORE_DR_dest300 MB100 MB0232 MB0188.4%30.0%
SRM_PlaceHolder_DR_dest122 MB41 MB06 MB043.6%87.0%
TEST20 GB27 MB184 MB0071.7%1.0%
-
Table 119 - Volume Efficiency Savings Detailed Information - SAN

-

1.9 Security Summary

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

1.9.1 NAS Vserver Local User

The following section provides the Local User information on NAS.

+ + +
VMWARE_DATASTORE50 GB0066 MB00.3%0.0%
VMWARE_DATASTORE__000150 GB0065 MB00.3%0.0%
+
Table 159 - Volume Efficiency Savings Detailed - NFS

+

1.8.1.6 NVME Vserver Volume Deduplication

+ + + +
VolumeStateStatusSchedule Or PolicyProgress
DBEnabledidle-Idle for 48:51:22
NVME_rootEnabledidlesun-sat@0Idle for 48:51:23
+
Table 160 - Volume Deduplication - NVME

+
1.8.1.6.1 Volume Efficiency
+ + + + +
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
DB23 GB20 GB18 MB20 GB40 GB179.4%
NVME_root19 MB400 KB1 MB173 KB573 KB2.9%
VMWARE_NVME973 MB904 MB00904 MB92.9%
+
Table 161 - Volume Efficiency Savings - NVME

+
1.8.1.6.2 Detailed Volume Efficiency
+ + + +
VolumeCapacityDedupe SavingsCompression SavingsSnapshot SavingsCloning SavingsEfficiency %Efficiency % w/o Snapshots
DB23 GB134 MB020 GB0179.4%1.0%
VMWARE_NVME973 MB000092.9%0.0%
+
Table 162 - Volume Efficiency Savings Detailed - NVME

+

1.8.1.7 ObjectS3 Vserver Volume Deduplication

1.8.1.7.1 Volume Efficiency
+ + + + +
VolumeCapacityUsedSnapshot UsedTotal SavingsEffective UsedEfficiency Percent
fg_oss_1723056019100 GB35 MB0035 MB0.0%
fg_oss_1723056019__0001100 GB35 MB0035 MB0.0%
ObjectS3_root19 MB524 KB1 MB339 KB863 KB4.4%
+
Table 163 - Volume Efficiency Savings - ObjectS3

+
1.8.1.7.2 Detailed Volume Efficiency
+ + + +
VolumeCapacityDedupe SavingsCompression SavingsSnapshot SavingsCloning SavingsEfficiency %Efficiency % w/o Snapshots
fg_oss_1723056019100 GB00000.0%0.0%
fg_oss_1723056019__0001100 GB00000.0%0.0%
+
Table 164 - Volume Efficiency Savings Detailed - ObjectS3

+

1.9 Security Information

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

1.9.1 PHARMAX-HQ Vserver Local User

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

+ + + + + + + + +
User NameApplicationAuth MethodRole NameLocked
adminAmqppasswordadminNo
adminConsolepasswordadminNo
adminHttppasswordadminNo
adminOntapipasswordadminNo
adminService-ProcessorpasswordadminNo
adminSshpasswordadminNo
autosupportConsolepasswordautosupportNo
+
Table 165 - Security Local Users - PHARMAX-HQ

+

1.9.2 CIFS Vserver Local User

The following section provides the Local User information on CIFS.

User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
-
Table 120 - Security Local Users information - NAS

-

1.9.2 NFS Vserver Local User

The following section provides the Local User information on NFS.

+
Table 166 - Security Local Users - CIFS

+

1.9.3 FCSAN Vserver Local User

The following section provides the Local User information on FCSAN.

User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
-
Table 121 - Security Local Users information - NFS

-

1.9.3 SAN Vserver Local User

The following section provides the Local User information on SAN.

+
Table 167 - Security Local Users - FCSAN

+

1.9.4 ISCSI Vserver Local User

The following section provides the Local User information on ISCSI.

-
User NameApplicationAuth MethodRole NameLocked
PrivateSnmpcommunityvsadmin-readonly-
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
-
Table 122 - Security Local Users information - SAN

-

1.9.4 Vserver SSL Certificate

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

- - - - - +
Table 168 - Security Local Users - ISCSI

+

1.9.5 NFS Vserver Local User

The following section provides the Local User information on NFS.

Common NameCertificate AuthorityClient AuthServer AuthSerial NumberVserver
NASNASYesYes169206CAC1E5D7FENAS
NFSNFSYesYes16988F283AE9725ANFS
ZENPR-HQZENPR-HQNoYes16904C1617930033ZENPR-HQ
SANSANNoYes168FD281723B93D4SAN
+ + + +
User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
-
Table 123 - Per Vserver SSL information - ZENPR-HQ

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

+
Table 169 - Security Local Users - NFS

+

1.9.6 NVME Vserver Local User

The following section provides the Local User information on NVME.

+ + + + +
User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
+
Table 170 - Security Local Users - NVME

+

1.9.7 ObjectS3 Vserver Local User

The following section provides the Local User information on ObjectS3.

+ + + + +
User NameApplicationAuth MethodRole NameLocked
vsadminHttppasswordvsadminYes
vsadminOntapipasswordvsadminYes
vsadminSshpasswordvsadminYes
+
Table 171 - Security Local Users - ObjectS3

+

1.9.8 Vserver SSL Certificate

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

+ + + + + + + + +
Common NameCertificate AuthorityClient AuthServer AuthSerial NumberVserver
CIFSCIFSNoYes17E97695BE3157D7CIFS
FCSANFCSANNoYes17E97936C289D7B0FCSAN
ISCSIISCSINoYes17E975E6FCD21819ISCSI
NFSNFSNoYes17E987C0A462F9D6NFS
NVMENVMENoYes17E975F4514F528ANVME
ObjectS3ObjectS3YesYes17E9864073BB8B53ObjectS3
PHARMAX-HQPHARMAX-HQNoYes17E8D68D35A0995BPHARMAX-HQ
+
Table 172 - Per Vserver SSL - PHARMAX-HQ

+

1.9.8.1 Vserver SSL Certificate Details

- - - - - - - - - -
Common NameProtocolHash FunctionSerial NumberExpirationVserver
NASsslSHA256169206CAC1E5D7FE7/15/2022NAS
NASsslSHA256169206CCC4BD0C987/9/2023NAS
ServersslSHA25616A11331EF36D4FB7/9/2023NAS
NFSsslSHA25616988F283AE9725A8/5/2022NFS
fabricpoolsslSHA25616A1132BB89AD0BC8/6/2023NFS
nfssslSHA256169A6E64CDEECCD58/5/2023NFS
ZENPR-HQsslSHA25616904C16179300337/9/2022ZENPR-HQ
ZENPR-HQsslSHA2566100000104098E74594A541DDB00000000010411/13/2023ZENPR-HQ
SANsslSHA256168FD281723B93D47/8/2022SAN
-
Table 124 - SSL Detailed information - ZENPR-HQ

-

1.9.5 Key Management Service (KMS)

The following section provides the Key Management Service type on ZENPR-HQ.

+ + + + + + + + +
CIFSsslSHA25617E97695BE3157D78/7/2025CIFS
FCSANsslSHA25617E97936C289D7B08/7/2025FCSAN
ISCSIsslSHA25617E975E6FCD218198/7/2025ISCSI
NFSsslSHA25617E987C0A462F9D68/7/2025NFS
NVMEsslSHA25617E975F4514F528A8/7/2025NVME
ObjectS3sslSHA25617E9864073BB8B538/7/2025ObjectS3
Objects3sslSHA25617E986418BC8C0487/31/2026ObjectS3
PHARMAX-HQsslSHA25617E8D68D35A0995B8/5/2025PHARMAX-HQ
+
Table 173 - SSL Detailed - PHARMAX-HQ

+

1.9.9 Key Management Service (KMS)

The following section provides the Key Management Service type on PHARMAX-HQ.

- +
Cluster IPKey StoreVserver
192.168.7.60OnboardZENPR-HQ
192.168.7.60OnboardPHARMAX-HQ
-
Table 125 - Key Management Service (KMS) information - ZENPR-HQ

-

1.9.6 Aggregate Encryption (NAE)

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

+
Table 174 - Key Management Service (KMS) - PHARMAX-HQ

+

1.9.10 Aggregate Encryption (NAE)

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

- - + +
AggregateAggregate EncryptionVolume CountState
aggr0_PHARMAX_HQ_01No1Online
aggr0_PHARMAX_HQ_02No1Online
PHARMAX_HQ_01_SSD_1No15Online
PHARMAX_HQ_02_SSD_1Yes8Online
PHARMAX_HQ_01_SSD_1Yes12Online
PHARMAX_HQ_02_SSD_1Yes13Online
-
Table 126 - Aggregate Encryption (NAE) information - ZENPR-HQ

-

1.9.6.1 Volume Encryption (NVE)

The following section provides the Volume Encryption (NVE) information on ZENPR-HQ.

+
Table 175 - Aggregate Encryption (NAE) - PHARMAX-HQ

+

1.9.10.1 Volume Encryption (NVE)

- - - - - - - - - - - - - - - - - -
NameAggregateEncryptedState
DATA NoOnline
DATA_clone_299 NoOnline
fg_oss_1630605678 YesOnline
SNAPLOCK_CPPHARMAX_HQ_02_SSD_1YesOnline
SNAPLOCK_ENTPHARMAX_HQ_02_SSD_1YesOnline
vol_19082021_201759_59_destPHARMAX_HQ_01_SSD_1NoOnline
vol_19082021_201759_59_dest_clone_652PHARMAX_HQ_01_SSD_1NoOnline
fg_oss_1630340493 YesOnline
fg_oss_1630605744 YesOnline
SHARE_NFSPHARMAX_HQ_01_SSD_1NoOnline
NTAPSOL_LUN_1PHARMAX_HQ_01_SSD_1NoOnline
Oracle_Data_VolumesPHARMAX_HQ_01_SSD_1NoOnline
SERVER_DATASTOREPHARMAX_HQ_01_SSD_1NoOnline
SERVER_DATASTORE_2PHARMAX_HQ_01_SSD_1NoOnline
SERVER_DATASTORE_DR_destPHARMAX_HQ_01_SSD_1NoOnline
SRM_PlaceHolder_DR_destPHARMAX_HQ_01_SSD_1NoOnline
TESTPHARMAX_HQ_01_SSD_1YesOnline
-
Table 127 - Volume Encryption (NVE) information - ZENPR-HQ

-

1.9.7 Snaplock Compliance Clock

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

+ + + + + + + + + + + + + +
DATAPHARMAX_HQ_01_SSD_1YesOnline
DATA_clone_100PHARMAX_HQ_01_SSD_1YesOnline
FlexGoupVol YesOnline
FlexGroup YesOnline
EXchangePHARMAX_HQ_02_SSD_1YesOnline
CG_Test_vol_1PHARMAX_HQ_01_SSD_1YesOnline
SQLCluster_QuorumPHARMAX_HQ_01_SSD_1YesOnline
UnmappedLunPHARMAX_HQ_02_SSD_1YesOnline
VMWARE_LUNPHARMAX_HQ_01_SSD_1YesOnline
VMWARE_DATASTORE YesOnline
DBPHARMAX_HQ_02_SSD_1YesOnline
VMWARE_NVMEPHARMAX_HQ_01_SSD_1YesOnline
fg_oss_1723056019 YesOnline
+
Table 176 - Volume Encryption (NVE) - PHARMAX-HQ

+

1.9.11 Snaplock Compliance Clock

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

- - + +
Node NameCompliance Clock
ZENPR-HQ-01Mon Nov 15 00:01:18 AST 2021 -04:00
ZENPR-HQ-02Mon Nov 15 00:01:56 AST 2021 -04:00
PHARMAX-HQ-01Thu Aug 08 11:20:34 UTC 2024 +00:00
PHARMAX-HQ-02Thu Aug 08 11:20:40 UTC 2024 +00:00
-
Table 128 - Snaplock Compliance Clock Information - ZENPR-HQ

-

1.9.7.1 Aggregate Snaplock Type

The following section provides the Aggregate Snaplock Type information on ZENPR-HQ.

+
Table 177 - Snaplock Compliance Clock - PHARMAX-HQ

+

1.9.11.1 Aggregate Snaplock Type

- +
Aggregate NameSnaplock Type
PHARMAX_HQ_01_SSD_1Non_Snaplock
PHARMAX_HQ_01_SSD_1Enterprise
PHARMAX_HQ_02_SSD_1Compliance
-
Table 129 - Aggregate Snaplock Type Information - ZENPR-HQ

-
1.9.7.1.1 Volume Snaplock Type
The following section provides the Volume Snaplock Type information on ZENPR-HQ.

+
Table 178 - Aggregate Snaplock Type - PHARMAX-HQ

+
1.9.11.1.1 Volume Snaplock Type
- - - - - - - - - - - - - - - - - - - - - - - - - -
VolumeAggregateSnaplock Type
DATA Non_Snaplock
DATA__0001PHARMAX_HQ_01_SSD_1Non_Snaplock
DATA_clone_299 Non_Snaplock
DATA_clone_299__0001PHARMAX_HQ_01_SSD_1Non_Snaplock
fg_oss_1630605678 Non_Snaplock
fg_oss_1630605678__0001PHARMAX_HQ_02_SSD_1Non_Snaplock
fg_oss_1630605678__0002PHARMAX_HQ_02_SSD_1Non_Snaplock
SNAPLOCK_CPPHARMAX_HQ_02_SSD_1Compliance
SNAPLOCK_ENTPHARMAX_HQ_02_SSD_1Enterprise
vol_19082021_201759_59_destPHARMAX_HQ_01_SSD_1Non_Snaplock
vol_19082021_201759_59_dest_clone_652PHARMAX_HQ_01_SSD_1Non_Snaplock
fg_oss_1630340493 Non_Snaplock
fg_oss_1630340493__0001PHARMAX_HQ_02_SSD_1Non_Snaplock
fg_oss_1630340493__0002PHARMAX_HQ_02_SSD_1Non_Snaplock
fg_oss_1630605744 Non_Snaplock
fg_oss_1630605744__0001PHARMAX_HQ_02_SSD_1Non_Snaplock
fg_oss_1630605744__0002PHARMAX_HQ_02_SSD_1Non_Snaplock
SHARE_NFSPHARMAX_HQ_01_SSD_1Non_Snaplock
NTAPSOL_LUN_1PHARMAX_HQ_01_SSD_1Non_Snaplock
Oracle_Data_VolumesPHARMAX_HQ_01_SSD_1Non_Snaplock
SERVER_DATASTOREPHARMAX_HQ_01_SSD_1Non_Snaplock
SERVER_DATASTORE_2PHARMAX_HQ_01_SSD_1Non_Snaplock
SERVER_DATASTORE_DR_destPHARMAX_HQ_01_SSD_1Non_Snaplock
SRM_PlaceHolder_DR_destPHARMAX_HQ_01_SSD_1Non_Snaplock
TESTPHARMAX_HQ_01_SSD_1Non_Snaplock
-
Table 130 - Volume Snaplock Type Information - ZENPR-HQ

-
1.9.7.1.1.1 Snaplock Volume Attributes
The following section provides the Snaplock Volume Attributes information on ZENPR-HQ.

+ + + + + + + + + + + + + + + + + + + + + + + +
DATAPHARMAX_HQ_01_SSD_1Non_Snaplock
DATA_clone_100PHARMAX_HQ_01_SSD_1Non_Snaplock
FlexGoupVol Enterprise
FlexGoupVol__0001PHARMAX_HQ_01_SSD_1Enterprise
FlexGoupVol__0002PHARMAX_HQ_02_SSD_1Enterprise
FlexGroup Non_Snaplock
FlexGroup__0001PHARMAX_HQ_02_SSD_1Non_Snaplock
FlexGroup__0002PHARMAX_HQ_02_SSD_1Non_Snaplock
FlexGroup__0003PHARMAX_HQ_01_SSD_1Non_Snaplock
FlexGroup__0004PHARMAX_HQ_02_SSD_1Non_Snaplock
FlexGroup__0005PHARMAX_HQ_01_SSD_1Non_Snaplock
FlexGroup__0006PHARMAX_HQ_01_SSD_1Non_Snaplock
EXchangePHARMAX_HQ_02_SSD_1Non_Snaplock
CG_Test_vol_1PHARMAX_HQ_01_SSD_1Non_Snaplock
SQLCluster_QuorumPHARMAX_HQ_01_SSD_1Non_Snaplock
UnmappedLunPHARMAX_HQ_02_SSD_1Non_Snaplock
VMWARE_LUNPHARMAX_HQ_01_SSD_1Non_Snaplock
VMWARE_DATASTORE Non_Snaplock
VMWARE_DATASTORE__0001PHARMAX_HQ_02_SSD_1Non_Snaplock
DBPHARMAX_HQ_02_SSD_1Non_Snaplock
VMWARE_NVMEPHARMAX_HQ_01_SSD_1Non_Snaplock
fg_oss_1723056019 Compliance
fg_oss_1723056019__0001PHARMAX_HQ_02_SSD_1Compliance
+
Table 179 - Volume Snaplock Type - PHARMAX-HQ

+

Snaplock Volume Attributes

+ + + + + + + + + + + + +
VolumeFlexGoupVol
Aggregate 
Snaplock TypeEnterprise
Maximum Retention Period30 years
Minimum Retention Period0 years
Privileged Delete State-
Volume Expiry Timenone
Volume Expiry Time Secs0
Auto Commit Periodnone
Default Retention Period0 years
Litigation Count0
+
Table 180 - Snaplock Volume Attributes - FlexGoupVol

+
+ + + + + + + + + + + + +
VolumeFlexGoupVol__0001
AggregatePHARMAX_HQ_01_SSD_1
Snaplock TypeEnterprise
Maximum Retention Period30 years
Minimum Retention Period0 years
Privileged Delete State-
Volume Expiry Timenone
Volume Expiry Time Secs0
Auto Commit Periodnone
Default Retention Period0 years
Litigation Count0
+
Table 181 - Snaplock Volume Attributes - FlexGoupVol__0001

+
- + + + + + + + + + + +
VolumeSNAPLOCK_CP
VolumeFlexGoupVol__0002
AggregatePHARMAX_HQ_02_SSD_1
Snaplock TypeEnterprise
Maximum Retention Period30 years
Minimum Retention Period0 years
Privileged Delete State-
Volume Expiry Timenone
Volume Expiry Time Secs0
Auto Commit Periodnone
Default Retention Period0 years
Litigation Count0
+
Table 182 - Snaplock Volume Attributes - FlexGoupVol__0002

+
+ + + @@ -2059,98 +1978,134 @@
Volumefg_oss_1723056019
Aggregate 
Snaplock TypeCompliance
Maximum Retention Period30 years
Minimum Retention Period0 years
Default Retention Periodmin
Litigation Count0
-
+
Table 183 - Snaplock Volume Attributes - fg_oss_1723056019

- + - + - +
VolumeSNAPLOCK_ENT
Volumefg_oss_1723056019__0001
AggregatePHARMAX_HQ_02_SSD_1
Snaplock TypeEnterprise
Snaplock TypeCompliance
Maximum Retention Period30 years
Minimum Retention Period0 years
Privileged Delete State-
Privileged Delete Statepermanently-disabled
Volume Expiry Timenone
Volume Expiry Time Secs0
Auto Commit Periodnone
Default Retention Periodmin
Litigation Count0
-
-

1.10 System Configuration Summary

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

1.10.1 System Image Configuration

The following section provides the System Image Configuration on ZENPR-HQ.

+
Table 184 - Snaplock Volume Attributes - fg_oss_1723056019__0001

+

1.10 System Configuration Information

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

1.10.1 System Image Configuration

- - - - + + + +
NodeLocationIs CurrentIs DefaultInstall TimeVersion
ZENPR-HQ-01image1NoNo10/11/2021 19:42:549.9.1P3
ZENPR-HQ-01image2YesYes11/05/2021 15:30:129.10.1RC1
ZENPR-HQ-02image1NoNo10/11/2021 19:42:049.9.1P3
ZENPR-HQ-02image2YesYes11/05/2021 15:29:169.10.1RC1
PHARMAX-HQ-01image1NoNo 9.11.1
PHARMAX-HQ-01image2YesYes08/05/2024 10:18:049.15.1
PHARMAX-HQ-02image1NoNo 9.11.1
PHARMAX-HQ-02image2YesYes08/05/2024 10:19:589.15.1
-
Table 131 - System Image information - ZENPR-HQ

-

1.10.2 System Web Service

The following section provides the System Web Service Status on ZENPR-HQ.

+
Table 185 - System Image - PHARMAX-HQ

+

1.10.2 System Web Service

- - + +
NodeHttp EnabledHttp PortHttps PortExternalStatusStatus Code
ZENPR-HQ-01No80443YesOnline200
ZENPR-HQ-02No80443YesOnline200
PHARMAX-HQ-01No80443YesOnline200
PHARMAX-HQ-02No80443YesOnline200
-
Table 132 - System Web Service information - ZENPR-HQ

-

1.10.3 DNS Configuration

The following section provides the DNS Configuration on ZENPR-HQ.

+
Table 186 - System Web Service - PHARMAX-HQ

+

1.10.3 DNS Configuration

- - - + +
VserverDns StateDomainsName ServersTimeout/s
NASEnabledzenpr.local192.168.5.12
NFSEnabledzenpr.local192.168.5.12
ZENPR-HQEnabledzenpr.local192.168.5.12
CIFSEnabledpharmax.local192.168.5.12
PHARMAX-HQEnabledpharmax.local192.168.5.12
-
Table 133 - System DNS Configuration Information - ZENPR-HQ

-

1.10.4 Configuration Backup Setting

The following section provides the Configuration Backup Setting on ZENPR-HQ.

- - +
Table 187 - System DNS Configuration - PHARMAX-HQ

+

1.10.4 Configuration Backup Setting

Cluster IPUrlUsername
192.168.7.60ftp://192.168.5.2/ontap/backupsgod
+ +
UrlUsername
Not ConfiguredNot Configured
-
Table 134 - System Configuration Backup Setting Information - ZENPR-HQ

-

1.10.4.1 ZENPR-HQ-01 Configuration Backup Items

The following section provides the Configuration Backup Items on ZENPR-HQ.

+
Table 188 - System Configuration Backup Setting - PHARMAX-HQ

+

1.10.4.1 PHARMAX-HQ-01 Configuration

- - - - - - -
Backup NameCreatedSizeScheduleIs Auto
ZENPR-HQ.weekly.2021-11-11.16_06_23.7z11/11/202160 MBweeklyYes
ZENPR-HQ.weekly.2021-11-21.15_27_27.7z11/21/202160 MBweeklyYes
ZENPR-HQ.daily.2021-11-22.07_54_31.7z11/22/202161 MBdailyYes
ZENPR-HQ.8hour.2021-11-24.11_36_32.7z11/24/202132 MB8hourYes
ZENPR-HQ.daily.2021-11-24.11_36_32.7z11/24/202161 MBdailyYes
ZENPR-HQ.8hour.2021-11-24.18_15_03.7z11/24/202158 MB8hourYes
-
Table 135 - System Configuration Backups Information - ZENPR-HQ-01

-

1.10.4.2 ZENPR-HQ-02 Configuration Backup Items

The following section provides the Configuration Backup Items on ZENPR-HQ.

+ + + + + +
PHARMAX-HQ.daily.2024-08-08.15_10_11.7z8/8/202423 MBdailyYes
PHARMAX-HQ.daily.2024-08-09.01_09_14.7z8/8/202424 MBdailyYes
PHARMAX-HQ.8hour.2024-08-09.02_15_00.7z8/8/202423 MB8hourYes
PHARMAX-HQ.8hour.2024-08-09.12_48_41.7z8/9/202423 MB8hourYes
PHARMAX-HQ.8hour.2024-08-09.18_15_00.7z8/9/202424 MB8hourYes
+
Table 189 - System Configuration Backups - PHARMAX-HQ-01

+

1.10.4.2 PHARMAX-HQ-02 Configuration

- - - - - - - - - -
Backup NameCreatedSizeScheduleIs Auto
ZENPR-HQ.weekly.2021-11-05.15_02_32.7z11/5/202157 MBweeklyYes
ZENPR-HQ.weekly.2021-11-11.16_06_23.7z11/11/202160 MBweeklyYes
ZENPR-HQ.daily.2021-11-21.15_27_27.7z11/21/202160 MBdailyYes
ZENPR-HQ.weekly.2021-11-21.15_27_27.7z11/21/202160 MBweeklyYes
ZENPR-HQ.daily.2021-11-22.07_54_31.7z11/22/202161 MBdailyYes
ZENPR-HQ.8hour.2021-11-22.10_15_00.7z11/22/202159 MB8hourYes
ZENPR-HQ.8hour.2021-11-22.18_15_00.7z11/22/202159 MB8hourYes
ZENPR-HQ.daily.2021-11-24.11_36_32.7z11/24/202161 MBdailyYes
ZENPR-HQ.8hour.2021-11-24.18_15_03.7z11/24/202158 MB8hourYes
-
Table 136 - System Configuration Backups Information - ZENPR-HQ-02

-

1.10.5 EMS Configuration

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

+ + + + + +
PHARMAX-HQ.daily.2024-08-07.12_06_41.7z8/7/202419 MBdailyYes
PHARMAX-HQ.daily.2024-08-08.15_10_11.7z8/8/202423 MBdailyYes
PHARMAX-HQ.daily.2024-08-09.01_09_14.7z8/8/202424 MBdailyYes
PHARMAX-HQ.8hour.2024-08-09.12_48_41.7z8/9/202423 MB8hourYes
PHARMAX-HQ.8hour.2024-08-09.18_15_00.7z8/9/202424 MB8hourYes
+
Table 190 - System Configuration Backups - PHARMAX-HQ-02

+

1.10.5 EMS Configuration

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

- + - +
NameEmail DestinationsSnmp TraphostSnmp CommunitySyslogSyslog Facility
allevents-----
asup-----
criticalsjcolonf@zenprsolutions.com-Private192.168.5.10default
criticals-----
pager-----
traphost-192.168.5.2Private--
traphost-----
-
Table 137 - System EMS Configuration Setting Information - ZENPR-HQ

-

1.10.6 System Timezone Configuration

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

+
Table 191 - System EMS Configuration Setting - PHARMAX-HQ

+

1.10.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 192 - Audit Settings - PHARMAX-HQ

+

1.10.5.2 PHARMAX-HQ-01 Emergency and Alert Messages

+ + + + + + + + + + + + + + + + + + + + + + + +
TimeDTSeverityEvent
08/08/2024 21:08:00emergencymonitor.globalStatus.critical: Controller failover of PHARMAX-HQ-02 is not possible: unsynchronized log.
08/08/2024 17:10:53alertperf.ccma.off: Performance archiver is not enabled for datastore ''.
08/08/2024 21:08:33alertflexcache.conf.refreshFailed: Failed to refresh FlexCache configuration for peer vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and peer volume MSID 2150419284. isPeerOrigin : 1.
08/08/2024 21:08:43emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0005 MSID 2150140157 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 21:08:43emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0006 MSID 2150140158 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 16:41:07emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
08/08/2024 11:09:18emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0006 MSID 2150140158 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 11:09:08alertflexcache.conf.refreshFailed: Failed to refresh FlexCache configuration for peer vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and peer volume MSID 2150419284. isPeerOrigin : 1.
08/08/2024 11:09:18emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0003 MSID 2150140155 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 12:43:26emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
08/08/2024 11:09:18emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0005 MSID 2150140157 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/09/2024 08:48:14emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0006 MSID 2150140158 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/09/2024 08:48:14emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0003 MSID 2150140155 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/09/2024 08:48:14emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0005 MSID 2150140157 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/09/2024 12:33:04emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
08/09/2024 12:16:36alertsecurity.invalid.login: Failed to authenticate login attempt to Vserver: PHARMAX-HQ, username: admi, application: http.
08/09/2024 08:48:04alertflexcache.conf.refreshFailed: Failed to refresh FlexCache configuration for peer vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and peer volume MSID 2150419284. isPeerOrigin : 1.
08/08/2024 22:03:29emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
08/08/2024 21:08:43emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0003 MSID 2150140155 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 22:23:06alertperf.ccma.off: Performance archiver is not enabled for datastore ''.
08/09/2024 08:47:39alertvifmgr.cluscheck.droppedall: Total packet loss when pinging from cluster lif PHARMAX-HQ-01_clus2 (node PHARMAX-HQ-01) to cluster lif PHARMAX-HQ-02_clus2 (node PHARMAX-HQ-02).
08/09/2024 08:47:00emergencymonitor.globalStatus.critical: Controller failover of PHARMAX-HQ-02 is not possible: unsynchronized log.
+
Table 193 - HealtCheck - System EMS Messages - PHARMAX-HQ-01

+

1.10.5.3 PHARMAX-HQ-02 Emergency and Alert Messages

+ + + + + + + + + + + + + + + + + + + + +
TimeDTSeverityEvent
08/08/2024 17:10:54alertperf.ccma.off: Performance archiver is not enabled for datastore ''.
08/08/2024 16:46:14emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
08/08/2024 17:11:18alertflexcache.conf.refreshFailed: Failed to refresh FlexCache configuration for peer vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and peer volume MSID 2150419284. isPeerOrigin : 1.
08/08/2024 17:11:02emergencymonitor.globalStatus.critical: Controller failover of PHARMAX-HQ-01 is not possible: local halt in progress.
08/08/2024 12:43:28emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
08/08/2024 11:09:19emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0004 MSID 2150140156 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 11:09:09alertflexcache.conf.refreshFailed: Failed to refresh FlexCache configuration for peer vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and peer volume MSID 2150419284. isPeerOrigin : 1.
08/08/2024 11:09:19emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0002 MSID 2150140154 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 11:09:19emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0001 MSID 2150140153 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 21:08:43emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0001 MSID 2150140153 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/09/2024 08:48:15emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0004 MSID 2150140156 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/09/2024 08:48:15emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0001 MSID 2150140153 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/09/2024 12:33:10emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
08/09/2024 08:48:15emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0002 MSID 2150140154 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 22:23:29alertflexcache.conf.refreshFailed: Failed to refresh FlexCache configuration for peer vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and peer volume MSID 2150419284. isPeerOrigin : 1.
08/08/2024 21:08:43emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0004 MSID 2150140156 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 21:08:43emergencyflexcache.originDisconnected: FlexCache volume with Name FlexGroup__0002 MSID 2150140154 on Vserver Name CIFS UUID 3509ce63-54c4-11ef-9165-005056b04618 is disconnected from its origin volume with Vserver UUID 825e4ae5-54f1-11ef-a3d3-005056b0afeb and MSID 2150419284.
08/08/2024 22:23:07alertperf.ccma.off: Performance archiver is not enabled for datastore ''.
08/08/2024 22:03:29emergencysecd.ldap.noServers: None of the LDAP servers configured for Vserver (CIFS) are currently accessible via the network for LDAP service type (Service: LDAP (Active Directory), Operation: SiteDiscovery).
+
Table 194 - HealtCheck - System EMS Messages - PHARMAX-HQ-02

+

1.10.6 System Timezone Configuration

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

- -
TimezoneTimezone UTCTimezone VersionCurrent Time
America/Puerto_Rico-04002021a11/24/2021 19:58:19
-
Table 138 - System TimeZone Information - ZENPR-HQ

-

1.10.6.1 Network Time Protocol Configuration

The following section provides the Network Time Protocol Configuration on ZENPR-HQ.

- - - -
Server NameNTP VersionPreferredAuthentication Enabled
192.168.5.1AutoNoNo
pool.ntp.orgAutoNoNo
-
Table 139 - System Network Time Protocol Information - ZENPR-HQ

-
1.10.6.1.1 Network Time Protocol Node Status Information
The following section provides the Network Time Protocol Node Status on ZENPR-HQ.

- - - - - -
NodeTime OffsetSelection StateServerPeer Status
ZENPR-HQ-01-198.37Candidate Server192.168.5.1Reachable
ZENPR-HQ-01  pool.ntp.org 
ZENPR-HQ-02-116.064Server Not Responding or Too Distant192.168.5.1Reachable
ZENPR-HQ-02  pool.ntp.org 
-
Table 140 - System NTP Host Status Information - ZENPR-HQ

+Etc/UTC+00002023c08/09/2024 15:51:26 + +
Table 195 - System TimeZone - PHARMAX-HQ


From 69baf0fcd61746c3863e520a0791e051132630b4 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Fri, 9 Aug 2024 15:55:10 -0400 Subject: [PATCH 27/27] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 109bb9d..2b0b9a0 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.6.7] - Unreleased +## [0.6.7] - 2024-08-09 ### Added