From 012ab7d09ebf7a3fa66ea87a8a86cd59fbeaef88 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Tue, 21 Oct 2025 17:17:05 -0400 Subject: [PATCH 1/7] Update AsBuiltReport.Core version to 1.5.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f64f8b6..2cd2460 100755 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ These modules may also be manually installed. | Module Name | Minimum Required Version | PS Gallery | GitHub | | ------------------ | :----------------------: | :-------------------------------------------------------------------: | :-------------------------------------------------------------------------: | | 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) | +| AsBuiltReport.Core | 1.5.0 | [Link](https://www.powershellgallery.com/packages/AsBuiltReport.Core) | [Link](https://github.com/AsBuiltReport/AsBuiltReport.Core/releases/latest) | | Netapp.ONTAP | 9.17.1.2509 | [Link](https://www.powershellgallery.com/packages/NetApp.ONTAP) | | ## :package: Module Installation From 57aa06f9bac490e0aa0453fc9fbdf1419566b3cf Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sun, 26 Oct 2025 14:14:02 -0400 Subject: [PATCH 2/7] Refactor Export-AbrOntapDiagram to handle image format for Unix platforms and improve error messaging --- Src/Private/Export-AbrOntapDiagram.ps1 | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/Src/Private/Export-AbrOntapDiagram.ps1 b/Src/Private/Export-AbrOntapDiagram.ps1 index 1cfb8a6..1676cc0 100644 --- a/Src/Private/Export-AbrOntapDiagram.ps1 +++ b/Src/Private/Export-AbrOntapDiagram.ps1 @@ -114,22 +114,17 @@ function Export-AbrOntapDiagram { } } try { - if ($PSVersionTable.Platform -ne 'Unix') { - $DiagramParams.Remove('Format') - $DiagramParams.Add('Format', "base64") + $DiagramParams.Remove('Format') + $DiagramParams.Add('Format', "base64") - $Graph = $DiagramObject - $Diagram = New-Diagrammer @DiagramParams -InputObject $Graph - if ($Diagram) { - if ((Get-DiaImagePercent -GraphObj $Diagram).Width -gt 600) { $ImagePrty = 40 } else { $ImagePrty = 30 } - Section -Style Heading2 $MainDiagramLabel { - Image -Base64 $Diagram -Text "NetApp Ontap Diagram" -Percent $ImagePrty -Align Center - Paragraph "Image preview: Opens the image in a new tab to view it at full resolution." -Tabs 2 - } + $Graph = $DiagramObject + $Diagram = New-Diagrammer @DiagramParams -InputObject $Graph + if ($Diagram) { + if ((Get-DiaImagePercent -GraphObj $Diagram).Width -gt 600) { $ImagePrty = 40 } else { $ImagePrty = 30 } + Section -Style Heading2 $MainDiagramLabel { + Image -Base64 $Diagram -Text "NetApp Ontap Diagram" -Percent $ImagePrty -Align Center + Paragraph "Image preview: Opens the image in a new tab to view it at full resolution." -Tabs 2 } - } else { - Write-PScriboMessage -IsWarning -Message "PSCribo Images embedding is not supported on PowerShell Core running on Linux or MacOS." - } } catch { Write-PScriboMessage -IsWarning -Message "Unable to generate the Ontap Diagram: $($_.Exception.Message)" From c3839a00655002550b1bd2824bf6e8827c450421 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sun, 26 Oct 2025 14:14:28 -0400 Subject: [PATCH 3/7] Refactor Get-AbrOntapStorageAggrDiagram for consistency in casing and improve readability of node management and aggregate handling --- Src/Private/Get-AbrOntapNodeAggrDiagram.ps1 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Src/Private/Get-AbrOntapNodeAggrDiagram.ps1 b/Src/Private/Get-AbrOntapNodeAggrDiagram.ps1 index cf608f0..93011e3 100644 --- a/Src/Private/Get-AbrOntapNodeAggrDiagram.ps1 +++ b/Src/Private/Get-AbrOntapNodeAggrDiagram.ps1 @@ -91,7 +91,7 @@ function Get-AbrOntapStorageAggrDiagram { "Mgmt" = switch ([string]::IsNullOrEmpty($NodeMgmtAddress)) { $true { "Unknown" } $false { $NodeMgmtAddress } - Default { "Unknown" } + default { "Unknown" } } } } @@ -115,11 +115,11 @@ function Get-AbrOntapStorageAggrDiagram { "raid0" { "RAID 0" } "raid1" { "RAID 1" } "raid10" { "RAID 10" } - Default { "Unknown" } + default { "Unknown" } } } } - Default { "Unknown" } + default { "Unknown" } } "Raid Size" = $Aggr.RaidSize "State" = $Aggr.State @@ -132,7 +132,7 @@ function Get-AbrOntapStorageAggrDiagram { foreach ($Node in $NodeAdditionalInfo) { $ClusterNodeObj = @() - $ClusterNodeObj += Add-DiaHTMLNodeTable -ImagesObj $Images -inputObject $Node.NodeName -Align "Center" -iconType "Ontap_Node" -columnSize 1 -IconDebug $IconDebug -MultiIcon -AditionalInfo $Node.AdditionalInfo -Subgraph -SubgraphLabel $Node.NodeName -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -TableBorderColor "#71797E" -TableBorder 0 -SubgraphLabelFontsize 22 -fontSize 18 + $ClusterNodeObj += Add-DiaHtmlNodeTable -ImagesObj $Images -inputObject $Node.NodeName -Align "Center" -iconType "Ontap_Node" -ColumnSize 1 -IconDebug $IconDebug -MultiIcon -AditionalInfo $Node.AdditionalInfo -Subgraph -SubgraphLabel $Node.NodeName -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -TableBorderColor "#71797E" -TableBorder 0 -SubgraphLabelFontSize 22 -FontSize 18 if ($ClusterNodeObj) { if ($AggrInfo.Count -eq 1) { @@ -142,11 +142,11 @@ function Get-AbrOntapStorageAggrDiagram { } else { $AggrInfoColumnSize = $AggrInfo.Count } - $ClusterNodeObj += Add-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($AggrInfo | Where-Object { $_.NodeName -eq $Node.Nodename }).AggregateName -Align "Center" -iconType "Ontap_Aggregate" -columnSize $AggrInfoColumnSize -IconDebug $IconDebug -MultiIcon -AditionalInfo ($AggrInfo | Where-Object { $_.NodeName -eq $Node.Nodename }).AdditionalInfo -Subgraph -SubgraphLabel "Aggregates" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -TableBorderColor "#71797E" -TableBorder 1 -SubgraphLabelFontsize 22 -fontSize 18 + $ClusterNodeObj += Add-DiaHtmlNodeTable -ImagesObj $Images -inputObject ($AggrInfo | Where-Object { $_.NodeName -eq $Node.Nodename }).AggregateName -Align "Center" -iconType "Ontap_Aggregate" -ColumnSize $AggrInfoColumnSize -IconDebug $IconDebug -MultiIcon -AditionalInfo ($AggrInfo | Where-Object { $_.NodeName -eq $Node.Nodename }).AdditionalInfo -Subgraph -SubgraphLabel "Aggregates" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -TableBorderColor "#71797E" -TableBorder 1 -SubgraphLabelFontSize 22 -FontSize 18 } if ($ClusterNodeObj) { - $ClusterNodeSubgraphObj = Add-DiaHTMLSubGraph -ImagesObj $Images -TableArray $ClusterNodeObj -Align 'Center' -IconDebug $IconDebug -Label " " -LabelPos 'top' -TableStyle "dashed,rounded" -TableBorderColor $Edgecolor -TableBorder 1 -columnSize 1 -fontSize 12 + $ClusterNodeSubgraphObj = Add-DiaHtmlSubGraph -ImagesObj $Images -TableArray $ClusterNodeObj -Align 'Center' -IconDebug $IconDebug -Label " " -LabelPos 'top' -TableStyle "dashed,rounded" -TableBorderColor $Edgecolor -TableBorder 1 -ColumnSize 1 -FontSize 12 } $ClusterNodesObj += $ClusterNodeSubgraphObj @@ -160,10 +160,10 @@ function Get-AbrOntapStorageAggrDiagram { } else { $ClusterNodesObjColumnSize = $ClusterNodesObj.Count } - $ClusterMgmtObj = Add-DiaHTMLSubGraph -ImagesObj $Images -TableArray $ClusterNodesObj -Align 'Right' -IconDebug $IconDebug -Label "Management: $($ClusterInfo.NcController)" -LabelPos 'down' -TableStyle "dashed,rounded" -TableBorderColor $Edgecolor -TableBorder 0 -columnSize $ClusterNodesObjColumnSize -fontSize 18 + $ClusterMgmtObj = Add-DiaHtmlSubGraph -ImagesObj $Images -TableArray $ClusterNodesObj -Align 'Right' -IconDebug $IconDebug -Label "Management: $($ClusterInfo.NcController.Name)" -LabelPos 'down' -TableStyle "dashed,rounded" -TableBorderColor $Edgecolor -TableBorder 0 -ColumnSize $ClusterNodesObjColumnSize -FontSize 18 if ($ClusterMgmtObj) { - Node Cluster @{Label = $ClusterMgmtObj; shape = 'plain'; fillColor = 'transparent'; fontsize = 14 } + Node ClusterAggrs @{Label = $ClusterMgmtObj; shape = 'plain'; fillColor = 'transparent'; fontsize = 14 } } else { Write-PScriboMessage -IsWarning "Unable to create ClusterNodesObj. No Cluster Management Object found." From 6832af0fb20630ab81ac2007ed9d80fe376568d6 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Sun, 26 Oct 2025 14:17:11 -0400 Subject: [PATCH 4/7] Bump module version to 0.6.10 and update changelog for new features and fixes --- AsBuiltReport.NetApp.ONTAP.psd1 | 4 ++-- CHANGELOG.md | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/AsBuiltReport.NetApp.ONTAP.psd1 b/AsBuiltReport.NetApp.ONTAP.psd1 index 1116211..b9c4d6d 100755 --- a/AsBuiltReport.NetApp.ONTAP.psd1 +++ b/AsBuiltReport.NetApp.ONTAP.psd1 @@ -12,7 +12,7 @@ RootModule = 'AsBuiltReport.NetApp.ONTAP.psm1' # Version number of this module. - ModuleVersion = '0.6.9' + ModuleVersion = '0.6.10' # Supported PSEditions # CompatiblePSEditions = @() @@ -62,7 +62,7 @@ }, @{ ModuleName = 'Diagrammer.Core'; - ModuleVersion = '0.2.32' + ModuleVersion = '0.2.33' } ) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa1a00e..c9e0a0a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,18 @@ 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.10] - Unreleased + +### Changed + +- Refactor Export-AbrOntapDiagram to handle image format for Unix platforms and improve error messaging +- Bump Diagrammer.Core module requirement to v0.2.33 +- Bump module version to v0.6.10 + +### Fixed + +- Fix Get-AbrOntapStorageAggrDiagram for drawing node management and aggregate storage relationships correctly. + ## [0.6.9] - 2025-10-21 ### Changed @@ -15,12 +27,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Diagrammer.Core v0.2.32 - NetApp.Ontap v9.17.1.2509 - Refactor Get-NetAppOntapAPI to handle Unix platform and improve error handling in Invoke-AsBuiltReport.NetApp.ONTAP +- Refactor Export-AbrOntapDiagram to handle image format for Unix platforms and improve error messaging ### Fixed - Fix issue where cluster replication diagram generation fails if no replication relationships are found. - Fix issue where certain sections of the report may not render correctly on Unix-based systems. - Close [#58](https://github.com/AsBuiltReport/AsBuiltReport.NetApp.ONTAP/issues/58) +- Fix Get-AbrOntapStorageAggrDiagram for drawing node management and aggregate storage relationships correctly. ## [0.6.8] - 2025-08-18 From 34450887d557fec3cbbb73bc8e329cb5dabc0ece Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Mon, 27 Oct 2025 20:32:20 -0400 Subject: [PATCH 5/7] Add WaterMarkFontOpacity parameter to Export-AbrOntapDiagram function --- CHANGELOG.md | 4 ++++ Src/Private/Export-AbrOntapDiagram.ps1 | 1 + 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a771ad..22b90d8 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.6.10] - Unreleased +### Added + +- Add WaterMarkFontOpacity parameter to Export-AbrOntapDiagram function + ### Changed - Refactor Export-AbrOntapDiagram to handle image format for Unix platforms and improve error messaging diff --git a/Src/Private/Export-AbrOntapDiagram.ps1 b/Src/Private/Export-AbrOntapDiagram.ps1 index 1676cc0..041c007 100644 --- a/Src/Private/Export-AbrOntapDiagram.ps1 +++ b/Src/Private/Export-AbrOntapDiagram.ps1 @@ -48,6 +48,7 @@ function Export-AbrOntapDiagram { 'LogoName' = 'AsBuiltReport_LOGO' 'SignatureLogoName' = 'Abr_LOGO_Footer' 'WaterMarkText' = $Options.DiagramWaterMark + 'WaterMarkFontOpacity' = 20 'Direction' = & { if ($MainDiagramLabel -eq 'Cluster Replication Diagram') { 'left-to-right' From 450859e2db4e116eaf995ff8755dc92ebfcf933d Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Mon, 27 Oct 2025 20:35:54 -0400 Subject: [PATCH 6/7] Refactor Get-NetAppOntapAPI to streamline certificate validation for Unix platforms --- CHANGELOG.md | 1 + Src/Private/Get-NetAppOntapAPI.ps1 | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22b90d8..5abc150 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactor Export-AbrOntapDiagram to handle image format for Unix platforms and improve error messaging - Bump Diagrammer.Core module requirement to v0.2.33 - Bump module version to v0.6.10 +- Refactor Get-NetAppOntapAPI to streamline certificate validation for Unix platforms ### Fixed diff --git a/Src/Private/Get-NetAppOntapAPI.ps1 b/Src/Private/Get-NetAppOntapAPI.ps1 index 93a4550..efc0e2e 100644 --- a/Src/Private/Get-NetAppOntapAPI.ps1 +++ b/Src/Private/Get-NetAppOntapAPI.ps1 @@ -26,10 +26,7 @@ function Get-NetAppOntapAPI { ) begin { - if ($PSVersionTable.Platform -ne 'Unix') { - #region Workaround for SelfSigned Cert an force TLS 1.2 - if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type) { - $certCallback = @" + $certCallback = @" using System; using System.Net; using System.Net.Security; @@ -55,6 +52,9 @@ function Get-NetAppOntapAPI { } } "@ + if ($PSVersionTable.PSEdition -ne 'Core') { + #region Workaround for SelfSigned Cert an force TLS 1.2 + if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type) { Add-Type $certCallback } [ServerCertificateValidationCallback]::Ignore() From 50c48e33a7fcad966469161f087240ff9271d834 Mon Sep 17 00:00:00 2001 From: Jonathan Colon Date: Mon, 27 Oct 2025 20:57:03 -0400 Subject: [PATCH 7/7] Update SignatureLogoName in Export-AbrOntapDiagram function for consistency --- CHANGELOG.md | 1 + Src/Private/Export-AbrOntapDiagram.ps1 | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5abc150..6d8398c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Bump Diagrammer.Core module requirement to v0.2.33 - Bump module version to v0.6.10 - Refactor Get-NetAppOntapAPI to streamline certificate validation for Unix platforms +- Update SignatureLogoName in Export-AbrOntapDiagram function for consistency ### Fixed diff --git a/Src/Private/Export-AbrOntapDiagram.ps1 b/Src/Private/Export-AbrOntapDiagram.ps1 index 041c007..cf738f1 100644 --- a/Src/Private/Export-AbrOntapDiagram.ps1 +++ b/Src/Private/Export-AbrOntapDiagram.ps1 @@ -46,7 +46,7 @@ function Export-AbrOntapDiagram { 'IconPath' = $IconPath 'ImagesObj' = $Images 'LogoName' = 'AsBuiltReport_LOGO' - 'SignatureLogoName' = 'Abr_LOGO_Footer' + 'SignatureLogoName' = 'AsBuiltReport_Signature' 'WaterMarkText' = $Options.DiagramWaterMark 'WaterMarkFontOpacity' = 20 'Direction' = & {