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