Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Disable-Member()
- {
- param($pool_name, $member);
- $vals = $member.Split( (, ':'));
- $member_addr = $vals[0];
- $member_port = $vals[1];
- Write-Host "Disabling Session Enabled State...";
- try{
- $MemberSessionState = New-Object -TypeName iControl.LocalLBPoolMemberMemberSessionState;
- $MemberSessionState.member = New-Object -TypeName iControl.CommonIPPortDefinition;
- $MemberSessionState.member.address = $member_addr;
- $MemberSessionState.member.port = $member_port;
- $MemberSessionState.session_state = "STATE_DISABLED";
- $MemberSessionStateAofA = New-Object -TypeName "iControl.LocalLBPoolMemberMemberSessionState[][]" 1,1
- $MemberSessionStateAofA[0][0] = $MemberSessionState;
- (Get-F5.iControl).LocalLBPoolMember.set_session_enabled_state( (, $pool_name), $MemberSessionStateAofA);
- }
- catch
- {
- #Print Error message if the pool does not contain the pool_member
- [string]$i="ERROR: The requested pool member does not belong to the specified pool name. Please provide valid pool and its member.`n"
- write-host $i -foregroundcolor "yellow"
- }
- Write-Host "Waiting for current connections to drop to zero..."
- try{
- $MemberDef = New-Object -TypeName iControl.CommonIPPortDefinition;
- $MemberDef.address = $member_addr;
- $MemberDef.port = $member_port;
- $MemberDefAofA = New-Object -TypeName "iControl.CommonIPPortDefinition[][]" 1,1
- $MemberDefAofA[0][0] = $MemberDef;
- $cur_connections = 1;
- while ( $cur_connections -gt 0 )
- {
- $MemberStatisticsA = (Get-F5.iControl).LocalLBPoolMember.get_statistics( (, $pool_name), $MemberDefAofA);
- $MemberStatisticEntry = $MemberStatisticsA[0].statistics[0];
- $Statistics = $MemberStatisticEntry.statistics;
- foreach ($Statistic in $Statistics)
- {
- $type = $Statistic.type;
- $value = $Statistic.value;
- if ( $type -eq "STATISTIC_SERVER_SIDE_CURRENT_CONNECTIONS" )
- {
- # just use the low value. Odds are there aren't over 2^32 current connections.
- # If your site is this big, you'll have to convert this to a 64 bit number.
- $cur_connections = $value.low;
- Write-Host "Current Connections: $cur_connections"
- }
- }
- Start-Sleep -s 1
- }
- } catch {
- #Print Error message if the connections cannot be dropped
- [string]$i="ERROR: The specified pool member was not found.`n"
- write-host $i -foregroundcolor "yellow"
- }
- Write-Host "Disabling Monitor State...";
- try
- {
- $MemberMonitorState = New-Object -TypeName iControl.LocalLBPoolMemberMemberMonitorState;
- $MemberMonitorState.member = New-Object -TypeName iControl.CommonIPPortDefinition;
- $MemberMonitorState.member.address = $member_addr;
- $MemberMonitorState.member.port = $member_port;
- $MemberMonitorState.monitor_state = "STATE_DISABLED";
- $MemberMonitorStateAofA = New-Object -TypeName "iControl.LocalLBPoolMemberMemberMonitorState[][]" 1,1
- $MemberMonitorStateAofA[0][0] = $MemberMonitorState;
- (Get-F5.iControl).LocalLBPoolMember.set_monitor_state( (, $pool_name), $MemberMonitorStateAofA);
- Get-PoolMemberStatus $pool_name $member
- }
- catch {
- #Print Error message if the status cannot be set
- [string]$i="ERROR: The disable status could not be set. `n"
- write-host $i -foregroundcolor "yellow"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement