For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

Puli's avatar
Puli
Icon for Nimbostratus rankNimbostratus
Oct 26, 2008

How to set a node to Forced down in perl

Hi,

 

am using the perl toggel script to enable disable a member in a pool with perl.

 

Below is a code snippet in perl for function disable pool member

 

---------------------------------------------------------------

 

sub disablePoolMember()

 

{

 

my ($pool_name, $member_def) = (@_);

 

 

------------------------------------------------------------------------

 

Split apart node:port

 

------------------------------------------------------------------------

 

($sNodeIP, $sNodePort) = split(/:/, $member_def, 2);

 

if ( "" eq $sNodePort )

 

{

 

$sNodePort = "0";

 

}

 

$member = { address => $sNodeIP, port => $sNodePort };

 

 

--------------------------------------------------------------------

 

Query enabled state for given Node:port

 

--------------------------------------------------------------------

 

$pool_member_state = &getPoolMemberState($pool_name, $member);

 

 

----------------------------------------------------------------

 

Set the state to be toggled to.

 

----------------------------------------------------------------

 

my $toggleState = "STATE_DISABLED";

 

my $toggleState1 = "AVAILABILITY_DOWN";

 

if ( "STATE_DISABLED" eq $pool_member_state )

 

{

 

$toggleState = "STATE_ENABLED";

 

print "$cus_time : ";

 

print "Pool Member $sNodeIP is aleady in Disabled state. No Action taken.\n"

 

}

 

elsif ( "STATE_ENABLED" eq $pool_member_state )

 

{

 

$toggleState = "STATE_DISABLED";

 

}

 

else

 

{

 

die("Couldn't find member $member_def in pool $pool_name\n");

 

}

 

 

$MemberSessionState =

 

{

 

member => $member,

 

session_state => $toggleState,

 

monitor_state => $toggleState

 

};

 

push @MemberSessionStateList, $MemberSessionState;

 

push @MemberSessionStateLists, [@MemberSessionStateList];

 

----------------------------------------------------------------

 

Enable the state.

 

----------------------------------------------------------------

 

$soapResponse =

 

$PoolMember->set_session_enabled_state

 

(

 

SOAP::Data->name ( pool_names => ( [$pool_name] ) ),

 

SOAP::Data->name ( session_states => [@MemberSessionStateLists] )

 

);

 

&checkResponse($soapResponse);

 

print "$cus_time : ";

 

print "Pool Member $pool_name {$sNodeIP:$sNodePort} state set from '$pool_member_state' to '$toggleState'\n";

 

}

 

 

----------------------------------------------------------------------

 

Am trying to set option "Forced Offline (Only active connections

 

allowed)".

 

Am setting monitor_State above but it does no select that option when verified in UI.

 

How can make so it select "Forced Offline" instead of "Disabled"

 

 

Any help is greatly appreciated.

 

Ven.

 

1 Reply

  • Here's a mapping of the three-way toggle state in the GUI to the two iControl methods for controlling state (set_monitor_state, and set_session_enabled_state).

     

     

    Enabled (All traffic allowed):

     

    set_monitor_state : STATE_ENABLED

     

    set_session_enabled_state : STATE_ENABLED

     

     

    Disabled (Only persistent or active connections allowed):

     

    set_monitor_state : STATE_ENABLED

     

    set_session_enabled_state : STATE_DISABLED

     

     

    Forced Offline (Only active connections allowed):

     

    set_monitor_state : STATE_DISABLED

     

    set_session_enabled_state : STATE_DISABLED

     

     

     

    Hope this helps...

     

     

    -Joe