From a36a7cb37ae30f22b84f2979a5e80aac6b18534b Mon Sep 17 00:00:00 2001 From: Wes Carroll Date: Fri, 28 Feb 2020 08:15:15 -0500 Subject: [PATCH 1/3] Cleanup documentation --- docs/Get-ZertoRecoveryReport.md | 2 +- docs/Import-ZertoVmNicSetting.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/Get-ZertoRecoveryReport.md b/docs/Get-ZertoRecoveryReport.md index d8361bf..d316621 100644 --- a/docs/Get-ZertoRecoveryReport.md +++ b/docs/Get-ZertoRecoveryReport.md @@ -20,7 +20,7 @@ Get-ZertoRecoveryReport [] ### filter ``` Get-ZertoRecoveryReport [-startTime ] [-endTime ] [-pageNumber ] [-pageSize ] - [-vpgIdentifier ] [-vpgName ] [-recoveryType ] [-state ] [] + [-vpgName ] [-recoveryType ] [-state ] [] ``` ## DESCRIPTION diff --git a/docs/Import-ZertoVmNicSetting.md b/docs/Import-ZertoVmNicSetting.md index d65b8fc..1c9a226 100644 --- a/docs/Import-ZertoVmNicSetting.md +++ b/docs/Import-ZertoVmNicSetting.md @@ -26,7 +26,6 @@ Each entry in the CSV will be for one VM and a single NIC attached to that VM. E This logic is applied to both the Live and Test settings individually. It is recommended to use the `Export-ZertoVpgNicSetting` to dump all current settings and then modify a copy of the exported file with only the settings you wish to update. Import the copied file and if you need to revert, Import the original. - ## EXAMPLES ### Example 1 From e19f9b34f549a9b97ab035502ce84ee21b8f03a0 Mon Sep 17 00:00:00 2001 From: Wes Carroll Date: Fri, 28 Feb 2020 08:15:53 -0500 Subject: [PATCH 2/3] Update function to allow pipeline operations --- Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 | 2 +- .../Public/Checkpoint-ZertoVpg.ps1 | 22 +++++++++++-------- docs/Checkpoint-ZertoVpg.md | 6 ++--- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 b/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 index f580a6f..7ae3eea 100644 --- a/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 +++ b/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 @@ -16,7 +16,7 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' { Context "$($global:function)::Parameter Unit Tests" { It "Has a parameter for the VpgName that is Mandatory" { - Get-Command $global:function | Should -HaveParameter vpgName -Mandatory -Type String + Get-Command $global:function | Should -HaveParameter vpgName -Mandatory -Type 'String[]' } It "Has a parameter for the CheckpointName that is Mandatory" { diff --git a/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 b/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 index e8d94b7..c0dd1a4 100644 --- a/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 +++ b/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 @@ -4,10 +4,12 @@ function Checkpoint-ZertoVpg { param( [Parameter( Mandatory = $true, - HelpMessage = "Name of the VPG to tag." + HelpMessage = "Name of the VPG to tag.", + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true )] [ValidateNotNullOrEmpty()] - [string]$vpgName, + [string[]]$vpgName, [Parameter( Mandatory = $true, HelpMessage = "Text to tag the checkpoint with." @@ -18,16 +20,18 @@ function Checkpoint-ZertoVpg { begin { $baseUri = "vpgs" - $vpgIdentifier = $(get-zertovpg -name $vpgName).vpgIdentifier - $body = @{"checkpointName" = $checkpointName} } process { - if ($vpgIdentifier) { - $uri = "{0}/{1}/Checkpoints" -f $baseUri, $vpgIdentifier - Invoke-ZertoRestRequest -uri $uri -body $($body | ConvertTo-Json) -method "POST" - } else { - Write-Output "Cannot find VPG named $vpgName. Please check the name and try again." + foreach ($name in $vpgName) { + $vpgIdentifier = $(get-zertovpg -name $name).vpgIdentifier + if ($vpgIdentifier) { + $uri = "{0}/{1}/Checkpoints" -f $baseUri, $vpgIdentifier + $body = @{"checkpointName" = $checkpointName} + Invoke-ZertoRestRequest -uri $uri -body $($body | ConvertTo-Json) -method "POST" + } else { + Write-Output "Cannot find VPG named $name. Please check the name and try again." + } } } diff --git a/docs/Checkpoint-ZertoVpg.md b/docs/Checkpoint-ZertoVpg.md index d7cfbf5..7951d3c 100644 --- a/docs/Checkpoint-ZertoVpg.md +++ b/docs/Checkpoint-ZertoVpg.md @@ -13,7 +13,7 @@ Add a tagged checkpoint to a specified VPG ## SYNTAX ``` -Checkpoint-ZertoVpg [-vpgName] [-checkpointName] [] +Checkpoint-ZertoVpg [-vpgName] [-checkpointName] [] ``` ## DESCRIPTION @@ -49,14 +49,14 @@ Accept wildcard characters: False Name of the VPG to tag. ```yaml -Type: String +Type: String[] Parameter Sets: (All) Aliases: Required: True Position: 0 Default value: None -Accept pipeline input: False +Accept pipeline input: True (ByPropertyName, ByValue) Accept wildcard characters: False ``` From fde7f67e45f2c34765e3210e41605f790bb4e29e Mon Sep 17 00:00:00 2001 From: Wes Carroll Date: Mon, 2 Mar 2020 09:41:09 -0500 Subject: [PATCH 3/3] Update RELEASENOTES.md --- RELEASENOTES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4d97ada..d392c98 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -3,5 +3,6 @@ ### Zerto Virtual Manager * Addressed a reported [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/60) in the `Get-ZertoRecoveryReport` function where the `-VpgIdentifier` parameter was not working. This parameter is not accepted by the API as a valid filter and is ignored. This parameter has been removed from the function. -* Addressed a reported [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/60) where the `Export-ZertoVpgNicSetting` function would not properly execute when run against a VM with no NICs attached. +* Addressed a reported [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/61) where the `Export-ZertoVpgNicSetting` function would not properly execute when run against a VM with no NICs attached. * In reviewing the `Export-ZertoVpgNicSetting`, a review of the `Import-ZertoVpgNicSetting` was completed and it was determined to update the import logic based on various test cases. Along with this, it is now possible to reset the NIC settings to the default state with the `Import-ZertoVpgNicSetting` command. Please review the [Import-ZertoVpgNicSetting help](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Import-ZertoVmNicSetting.md) to review the updated options and import logic. +* Refactored the `Checkpoint-ZertoVpg` command to allow pipeline input (ByValue and ByProperty) for the VpgName parameter.