Public/Set-NSLBServiceGroup.ps1
<#
Copyright 2015 Brandon Olin Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. #> function Set-NSLBServiceGroup { <# .SYNOPSIS Updates an existing load balancer virtual server. .DESCRIPTION Updates an existing load balancer virtual server. .EXAMPLE Set-NSLBServiceGroup -Name 'sg01' -Comment 'This is a comment' Sets the comment for virtual server 'sg01'. .EXAMPLE Set-NSLBServiceGroup -Name 'sg01' HTTPCompression = 'ON' Enable the HTTP compression feature for service group 'sg01'. .EXAMPLE Set-NSLBServiceGroup -Name 'sg01' MaxBandwithKbps 819200 Set the maximum bandwidth for service group 'sg01' to 819200 Kbps. .PARAMETER Session The NetScaler session object. .PARAMETER Name The name or names of the service groups to update. .PARAMETER Cacheable Use the transparent cache redirection virtual server to forward the request to the cache server. .PARAMETER HealthMonitor Monitor the health of this service. .PARAMETER AppFlowLog Enable logging of AppFlow information. .PARAMETER Comment The comment associated with the virtual server. .PARAMETER SureConnect State of the SureConnect feature. .PARAMETER SurgeProtection Enable surge protection. .PARAMETER UseProxyPort Use the proxy port as the source port when initiating connections with the server. .PARAMETER DownStateFlush Flush all active transactions associated with all the services in the service group whose state transitions from UP to DOWN. .PARAMETER UseClientIP Use client's IP address as the source IP address when initiating connection to the server. .PARAMETER TCPBuffering Enable TCP buffering for the service group. .PARAMETER HTTPCompression Enable compression. .PARAMETER ClientIP Insert the Client IP header in requests forwarded to the service. .PARAMETER ClientIPHeader Name of the HTTP header whose value must be set to the IP address of the client. .PARAMETER MaxBandwithKbps Maximum bandwidth, in Kbps, allocated for all the services in the service group. .PARAMETER MonitorThreshold Minimum sum of weights of the monitors that are bound to this service. .PARAMETER MaxRequests Maximum number of requests that can be sent on a persistent connection to the service group. .PARAMETER MaxClients Maximum number of simultaneous open connections for the service group. .PARAMETER ClientIdleTimeout Time, in seconds, after which to terminate an idle client connection. .PARAMETER ServerIdleTimeout Time, in seconds, after which to terminate an idle server connection. .PARAMETER Force Suppress confirmation when updating a service group. .PARAMETER Passthru Return the service group object. #> [cmdletbinding(SupportsShouldProcess = $true, ConfirmImpact='Medium')] param( $Session = $script:session, [parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName)] [Alias('ServiceGroupName')] [string[]]$Name = (Read-Host -Prompt 'LB service group name'), [ValidateSet('NO', 'YES')] [string]$Cacheable = 'NO', [ValidateSet('NO', 'YES')] [string]$HealthMonitor = 'YES', [ValidateSet('DISABLED', 'ENABLED')] [string]$AppFlowLog = 'ENABLED', [string]$Comment, [ValidateSet('ON', 'OFF')] [string]$SureConnect = 'OFF', [ValidateSet('ON', 'OFF')] [string]$SurgeProtection = 'OFF', [ValidateSet('YES','NO')] [string]$UseProxyPort = 'YES', [ValidateSet('ENABLED','DISABLED')] [string]$DownStateFlush = 'ENABLED', [ValidateSet('YES','NO')] [string]$UseClientIP = 'NO', [ValidateSet('YES', 'NO')] [string]$TCPBuffering = 'NO', [ValidateSet('YES', 'NO')] [string]$HTTPCompression = 'YES', [ValidateSet('ENABLED','DISABLED')] [string]$ClientIP = 'DISABLED', [string]$ClientIPHeader, [ValidateRange(0, 4294967287)] [int]$MaxBandwithKbps, [ValidateRange(0, 65535)] [int]$MonitorThreshold, [ValidateRange(0, 65535)] [int]$MaxRequests, [ValidateRange(0, 4294967294)] [int]$MaxClients, [ValidateRange(0, 31536000)] [int]$ClientIdleTimeout = 180, [ValidateRange(0, 31536000)] [int]$ServerIdleTimeout = 360, [Switch]$Force, [Switch]$PassThru ) begin { _AssertSessionActive } process { foreach ($item in $Name) { if ($Force -or $PSCmdlet.ShouldProcess($item, 'Edit Service Group')) { $params = @{ servicegroupname = $item } if ($PSBoundParameters.ContainsKey('Cacheable')) { $params.Add('cacheable', $Cacheable) } if ($PSBoundParameters.ContainsKey('HealthMonitor')) { $params.Add('healthmonitor', $HealthMonitor) } if ($PSBoundParameters.ContainsKey('AppFlowLog')) { $params.Add('appflowlog', $AppFlowLog) } if ($PSBoundParameters.ContainsKey('Comment')) { $params.Add('comment', $Comment) } if ($PSBoundParameters.ContainsKey('SureConnect')) { $params.Add('sc', $SureConnect) } if ($PSBoundParameters.ContainsKey('SurgeProtection')) { $params.Add('sp', $SurgeProtection) } if ($PSBoundParameters.ContainsKey('UseProxyPort')) { $params.Add('useproxyport', $UseProxyPort) } if ($PSBoundParameters.ContainsKey('DownStateFlush')) { $params.Add('downstateflush', $DownStateFlush) } if ($PSBoundParameters.ContainsKey('UseClientIP')) { $params.Add('usip', $UseClientIP) } if ($PSBoundParameters.ContainsKey('TCPBuffering')) { $params.Add('tcpb', $TCPBuffering) } if ($PSBoundParameters.ContainsKey('HTTPCompression')) { $params.Add('cmp', $HTTPCompression) } if ($PSBoundParameters.ContainsKey('ClientIP')) { $params.Add('cip', $ClientIP) } if ($ClientIP -eq 'ENABLED') { $params.Add('cipheader', $ClientIPHeader) } if ($PSBoundParameters.ContainsKey('MaxBandwithKbps')) { $params.Add('maxbandwitch', $MaxBandwithKbps) } if ($PSBoundParameters.ContainsKey('MonitorThreshold')) { $params.Add('monthreshold', $MonitorThreshold) } if ($PSBoundParameters.ContainsKey('MaxRequests')) { $params.Add('maxreq', $MaxRequests) } if ($PSBoundParameters.ContainsKey('MaxClients')) { $params.Add('maxclient', $MaxClients) } if ($PSBoundParameters.ContainsKey('ClientIdleTimeout')) { $params.Add('clttimeout', $ClientIdleTimeout) } if ($PSBoundParameters.ContainsKey('ServerIdleTimeout')) { $params.Add('svrtimeout', $ServerIdleTimeout) } _InvokeNSRestApi -Session $Session -Method PUT -Type servicegroup -Payload $params -Action update if ($PSBoundParameters.ContainsKey('PassThru')) { return Get-NSLBServiceGroup -Session $Session -Name $item } } } } } |