Forum Discussion
patrickmamaid_1
Nimbostratus
Dec 25, 2008how do i force down a pool member in java?
help I'm trying to force down a pool member in java but I'm having some trouble.
here is my attempt:
private iControl.Interfaces interfaces = new iControl.Interfaces();
//interfaces initialized somewhere in a constructor
interfaces.initialize(S_BIGIPPROD_MIT, L_BIGIPPORT, username, password);
public void forceDownMember(PoolMember member) {
//PoolMember is a predefined class just stores the what poolname it belongs to, ip addr and hostname
String[] pool = {member.getPoolName()};
LocalLBPoolMemberMemberSessionState[][] b = null;
try {
b = interfaces.getLocalLBPoolMember().get_session_enabled_state(pool);
} catch (Exception ex) {
Logger.getLogger(PatricksBIGIPSOAPGrabberClass.class.getName()).log(Level.SEVERE, null, ex);
}
if (b != null) {
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b.length; j++) {
if (b[j].getMember().getAddress().equals(member.getHostip())) {
b[j].setSession_state(CommonEnabledState.STATE_DISABLED);
System.out.println("connections are being drained");
}
}
}
}
}
the function doesnt seem to drain the connections or change anything?
is this the right function to force down a pool member? I want to do this in
order to perform maintenance on a server
3 Replies
- patrickmamaid_1
Nimbostratus
I got it to work! partially however.. it now sets the pool member to
state:"Disabled (Only persistent or active connections allowed) "
but i want:
state:
"Forced Offline (Only active connections allowed) " and without: "Apply new state to all pool member instances "
here is my code so far:public void forceDownMember(PoolMember member) { //set up a sessionstate obj. iControl.LocalLBPoolMemberMemberSessionState sessionstate = new LocalLBPoolMemberMemberSessionState(); iControl.CommonIPPortDefinition ipportdef = new iControl.CommonIPPortDefinition(); ipportdef.setAddress(member.getHostip()); ipportdef.setPort(member.getHostport()); sessionstate.setMember(ipportdef); sessionstate.setSession_state(CommonEnabledState.STATE_DISABLED); iControl.LocalLBPoolMemberMemberSessionState[][] lbpoolmembersessionstateArray = {{sessionstate}}; try { String tmp[] = {member.getPoolName()}; interfaces.getLocalLBPoolMember().set_session_enabled_state(tmp, lbpoolmembersessionstateArray); System.out.println("Taking down "+member.getHostip()+" "+member.getHostname()); } catch(Exception e){ System.out.println("forceDownMember: "+e.toString()); } }//end of method
hopefully someone can help me out with this - patrickmamaid_1
Nimbostratus
I have got my force down the pool member code to work!
here is the code:public void forceDownMember(PoolMember member) { //set up a sessionstate obj. iControl.LocalLBPoolMemberMemberSessionState sessionstate = new LocalLBPoolMemberMemberSessionState(); iControl.CommonIPPortDefinition sessionipportdef = new iControl.CommonIPPortDefinition(); sessionipportdef.setAddress(member.getHostip()); sessionipportdef.setPort(member.getHostport()); sessionstate.setMember(sessionipportdef); sessionstate.setSession_state(CommonEnabledState.STATE_DISABLED); iControl.LocalLBPoolMemberMemberSessionState[][] lbpoolmembersessionstateArray = {{sessionstate}}; //set up member state obj iControl.LocalLBPoolMemberMemberMonitorState monitorstate = new LocalLBPoolMemberMemberMonitorState(); iControl.CommonIPPortDefinition monitoripportdef = new iControl.CommonIPPortDefinition(); monitoripportdef.setAddress(member.getHostip()); monitoripportdef.setPort(member.getHostport()); monitorstate.setMember(monitoripportdef); monitorstate.setMonitor_state(CommonEnabledState.STATE_DISABLED); iControl.LocalLBPoolMemberMemberMonitorState monitorstatArray[][] = {{monitorstate}}; try { String tmp[] = {member.getPoolName()}; interfaces.getLocalLBPoolMember().set_session_enabled_state(tmp, lbpoolmembersessionstateArray); interfaces.getLocalLBPoolMember().set_monitor_state(tmp, monitorstatArray); System.out.println("Took down " + member.getHostip() + " " + member.getHostname()); } catch (Exception e) { System.out.println("forceDownMember: " + e.toString()); } }
you must have both monitor state and session state disabled so it can be forced down - Patrick, first of all, sorry for not getting back to you sooner. I've been off the last few weeks so I'm just now getting caught up on forum questions. Also, thanks for posting all your great code snippets - it makes helping out that much easier.
As for the GUI states, I've posted in the forums a while back the API-GUI mappings.http://devcentral.f5.com/Default.aspx?tabid=53&forumid=1&tpage=1&view=topic&postid=860428711
Click here
Please post any and all other questions you get and I'll do my best go answer them sooner next time B-).
Cheers!
-Joe
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects
