From bc0ce747aa6db906f754c067b8bda17836169e66 Mon Sep 17 00:00:00 2001 From: Eric Carr Date: Tue, 25 Jun 2019 08:01:57 -0400 Subject: [PATCH 1/2] Add Delay option Added Delay option to give number of seconds before disabling a server. Changed Graceful option to use the Delay value if present on the command. --- NetScaler/Public/Disable-NSLBServer.ps1 | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/NetScaler/Public/Disable-NSLBServer.ps1 b/NetScaler/Public/Disable-NSLBServer.ps1 index 418a627..142645c 100644 --- a/NetScaler/Public/Disable-NSLBServer.ps1 +++ b/NetScaler/Public/Disable-NSLBServer.ps1 @@ -38,7 +38,7 @@ function Disable-NSLBServer { Disable the load balancer server 'server01' without confirmation and return the resulting object. .EXAMPLE - $server = Disable-NSLBServer -Name 'server01' -Graceful 60 -Force -PassThru + $server = Disable-NSLBServer -Name 'server01' -Graceful -Delay 60 -Force -PassThru Disable the load balancer server 'server01' without confirmation, giving a 60 second grace period before disabling and return the resulting object. @@ -49,7 +49,10 @@ function Disable-NSLBServer { The name or names of the load balancer servers to disable. .PARAMETER Graceful - Indicates graceful shutdown of the server. System will wait for all outstanding connections to this server to be closed before disabling the server. Wait time in seconds may be included before disabling happens. + Indicates graceful shutdown of the server. System will wait for all outstanding connections to this server to be closed before disabling the server. + + .PARAMETER Delay + How many seconds to wait before disabling this server. .PARAMETER Force Suppress confirmation when disabling the server. @@ -64,6 +67,8 @@ function Disable-NSLBServer { [parameter(Mandatory,ValueFromPipeline = $true, ValueFromPipelineByPropertyName)] [string[]]$Name = (Read-Host -Prompt 'LB server name'), + [int]$Delay, + [int]$Graceful, [switch]$Force, @@ -87,7 +92,17 @@ function Disable-NSLBServer { if ($Graceful -gt 0) { $params.Add('delay', $Graceful) } else { - $params.Add('delay', 0) + if ($PSBoundParameters.ContainsKey('Delay')) { + $params.Add('delay', $Delay) + } else { + $params.Add('delay', 0) + } + } + } else { + if ($PSBoundParameters.ContainsKey('Delay')) { + if ($Delay -gt 0) { + $params.Add('delay', $Delay) + } } } _InvokeNSRestApi -Session $Session -Method POST -Type server -Payload $params -Action disable From 61c84b99dc04e1d1062144fcea843f5792ad9777 Mon Sep 17 00:00:00 2001 From: Eric Carr Date: Tue, 6 Aug 2019 10:16:12 -0400 Subject: [PATCH 2/2] Add Parameter Sets - Add Parameter Sets to make the Graceful and Delay options mutually exclusive. Also cleaned up the code where it checks for the values on these parameters. --- NetScaler/Public/Disable-NSLBServer.ps1 | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/NetScaler/Public/Disable-NSLBServer.ps1 b/NetScaler/Public/Disable-NSLBServer.ps1 index 142645c..abb5f3a 100644 --- a/NetScaler/Public/Disable-NSLBServer.ps1 +++ b/NetScaler/Public/Disable-NSLBServer.ps1 @@ -49,7 +49,7 @@ function Disable-NSLBServer { The name or names of the load balancer servers to disable. .PARAMETER Graceful - Indicates graceful shutdown of the server. System will wait for all outstanding connections to this server to be closed before disabling the server. + Does a graceful shutdown of the server after the number of seconds. System will wait for all outstanding connections to this server to be closed before disabling the server. .PARAMETER Delay How many seconds to wait before disabling this server. @@ -67,8 +67,10 @@ function Disable-NSLBServer { [parameter(Mandatory,ValueFromPipeline = $true, ValueFromPipelineByPropertyName)] [string[]]$Name = (Read-Host -Prompt 'LB server name'), + [Parameter(ParameterSetName="Delay")] [int]$Delay, + [Parameter(ParameterSetName="Graceful")] [int]$Graceful, [switch]$Force, @@ -89,21 +91,10 @@ function Disable-NSLBServer { } if ($PSBoundParameters.ContainsKey('Graceful')) { $params.Add('graceful', 'YES') - if ($Graceful -gt 0) { - $params.Add('delay', $Graceful) - } else { - if ($PSBoundParameters.ContainsKey('Delay')) { - $params.Add('delay', $Delay) - } else { - $params.Add('delay', 0) - } - } - } else { - if ($PSBoundParameters.ContainsKey('Delay')) { - if ($Delay -gt 0) { - $params.Add('delay', $Delay) - } - } + $params.Add('delay', $Graceful) + } + if ($PSBoundParameters.ContainsKey('Delay')) { + $params.Add('delay', $Delay) } _InvokeNSRestApi -Session $Session -Method POST -Type server -Payload $params -Action disable