Advertisement
Guest User

Untitled

a guest
Aug 12th, 2013
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Disable-Member()
  2.     {
  3.         param($pool_name, $member);
  4.         $vals = $member.Split( (, ':'));
  5.         $member_addr = $vals[0];
  6.         $member_port = $vals[1];
  7.         Write-Host "Disabling Session Enabled State...";
  8.         try{
  9.             $MemberSessionState = New-Object -TypeName iControl.LocalLBPoolMemberMemberSessionState;
  10.             $MemberSessionState.member = New-Object -TypeName iControl.CommonIPPortDefinition;
  11.             $MemberSessionState.member.address = $member_addr;
  12.             $MemberSessionState.member.port = $member_port;
  13.             $MemberSessionState.session_state = "STATE_DISABLED";
  14.             $MemberSessionStateAofA = New-Object -TypeName "iControl.LocalLBPoolMemberMemberSessionState[][]" 1,1
  15.             $MemberSessionStateAofA[0][0] = $MemberSessionState;
  16.             (Get-F5.iControl).LocalLBPoolMember.set_session_enabled_state( (, $pool_name), $MemberSessionStateAofA);
  17.         }
  18.         catch
  19.         {
  20.             #Print Error message if the pool does not contain the pool_member
  21.             [string]$i="ERROR: The requested pool member does not belong to the specified pool name. Please provide valid pool and its member.`n"
  22.             write-host $i -foregroundcolor "yellow"
  23.         }
  24.         Write-Host "Waiting for current connections to drop to zero..."
  25.         try{
  26.             $MemberDef = New-Object -TypeName iControl.CommonIPPortDefinition;
  27.             $MemberDef.address = $member_addr;
  28.             $MemberDef.port = $member_port;
  29.             $MemberDefAofA = New-Object -TypeName "iControl.CommonIPPortDefinition[][]" 1,1
  30.             $MemberDefAofA[0][0] = $MemberDef;
  31.             $cur_connections = 1;
  32.             while ( $cur_connections -gt 0 )
  33.             {
  34.                 $MemberStatisticsA = (Get-F5.iControl).LocalLBPoolMember.get_statistics( (, $pool_name), $MemberDefAofA);
  35.                 $MemberStatisticEntry = $MemberStatisticsA[0].statistics[0];
  36.                 $Statistics = $MemberStatisticEntry.statistics;
  37.                 foreach ($Statistic in $Statistics)
  38.                 {
  39.                     $type = $Statistic.type;
  40.                     $value = $Statistic.value;
  41.                     if ( $type -eq "STATISTIC_SERVER_SIDE_CURRENT_CONNECTIONS" )
  42.                     {
  43.                         # just use the low value.  Odds are there aren't over 2^32 current connections.
  44.                         # If your site is this big, you'll have to convert this to a 64 bit number.
  45.                         $cur_connections = $value.low;
  46.                         Write-Host "Current Connections: $cur_connections"
  47.                     }
  48.                 }
  49.                 Start-Sleep -s 1
  50.             }
  51.         } catch {
  52.                 #Print Error message if the connections cannot be dropped
  53.                 [string]$i="ERROR: The specified pool member was not found.`n"
  54.                 write-host $i -foregroundcolor "yellow"
  55.             }
  56.         Write-Host "Disabling Monitor State...";
  57.         try
  58.             {
  59.             $MemberMonitorState = New-Object -TypeName iControl.LocalLBPoolMemberMemberMonitorState;
  60.             $MemberMonitorState.member = New-Object -TypeName iControl.CommonIPPortDefinition;
  61.             $MemberMonitorState.member.address = $member_addr;
  62.             $MemberMonitorState.member.port = $member_port;
  63.             $MemberMonitorState.monitor_state = "STATE_DISABLED";
  64.             $MemberMonitorStateAofA = New-Object -TypeName "iControl.LocalLBPoolMemberMemberMonitorState[][]" 1,1
  65.             $MemberMonitorStateAofA[0][0] = $MemberMonitorState;
  66.             (Get-F5.iControl).LocalLBPoolMember.set_monitor_state( (, $pool_name), $MemberMonitorStateAofA);
  67.             Get-PoolMemberStatus $pool_name $member
  68.         }
  69.         catch {
  70.             #Print Error message if the status cannot be set
  71.             [string]$i="ERROR: The disable status could not be set. `n"
  72.             write-host $i -foregroundcolor "yellow"
  73.         }
  74.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement