Forum Discussion
Brian_Hayes_118
Nimbostratus
Aug 12, 2009Get a CommonEnabledState from Monitor State
Hello all - I have been working on code to gracefully shut down a node of a pool, I followed the examples in the code repo but what I could never find was a way to get a CommonEnabledState from the methods like you can get from the session state. I wasn't concerned about this until I started to think about users issuing a CommonEnabledState on a node when it is already in that state (both session and/or monitor).
I am using BIG-IP_v9.3.1 and java 5.0.
To get the Session information it returns CommonEnabledState object.
/**
*
* @param member
* - The {@link BigIPPool.PoolMember} who's session state you need.
* @return - {@link CommonEnabledState} of the given pool member.
* @throws RemoteException
* @throws Exception
*/
public static CommonEnabledState getPoolMemberSessionState(BigIPPool.PoolMember member) throws RemoteException, Exception {
String[] poolname = new String[] { member.getBigIPPoolName() };
LocalLBPoolMemberPortType lbpool = BigIP.getIControlInterFace().getLocalLBPoolMember();
LocalLBPoolMemberMemberSessionState[][] poolStates = lbpool.get_session_enabled_state(poolname);
for (LocalLBPoolMemberMemberSessionState[] memberStates : poolStates) {
for (LocalLBPoolMemberMemberSessionState memberState : memberStates) {
if (member.getPortDefinition().equals(memberState.getMember())) {
return memberState.getSession_state();
}
}
}
return null;
}
When I try to do the same thing for the monitor it returns a different object.
/**
*
* @param member
* - The {@link BigIPPool.PoolMember} who's monitor state you need.
* @return - {@link LocalLBMonitorStatus} of the given pool member.
* @throws RemoteException
* @throws Exception
*/
public static LocalLBMonitorStatus getPoolMemberMonitorState(BigIPPool.PoolMember member) throws RemoteException, Exception {
String[] poolname = new String[] { member.getBigIPPoolName() };
LocalLBPoolMemberPortType lbpool = BigIP.getIControlInterFace().getLocalLBPoolMember();
LocalLBPoolMemberMemberMonitorStatus[][] poolStates = lbpool.get_monitor_status(poolname);
for (LocalLBPoolMemberMemberMonitorStatus[] memberStates : poolStates) {
for (LocalLBPoolMemberMemberMonitorStatus memberState : memberStates) {
if (member.getPortDefinition().equals(memberState.getMember())) {
return memberState.getMonitor_status();
}
}
}
return null;
}
The issue in what I am doing is that when you set the status of either monitor or session you use the CommonEnabledState object and I want to make sure that neither the session or Monitor are already set to the supplied CommonEnabledState value.
/**
* Set the Monitor State of a member to a given {@link CommonEnabledState}.
*
* @param member
* - Member to set the session state on.
* @param state
* - The {@link CommonEnabledState} to us.
* @return {@link LocalLBMonitorStatus} of the member after it has been set.
* @throws RemoteException
* @throws Exception
*/
public static LocalLBMonitorStatus setPoolMemberMonitorState(BigIPPool.PoolMember member, CommonEnabledState state) throws RemoteException, Exception {
String[] poolname = new String[] { member.getBigIPPoolName() };
LocalLBPoolMemberMemberMonitorState newMonitorState = new LocalLBPoolMemberMemberMonitorState();
newMonitorState.setMonitor_state(state);
newMonitorState.setMember(member.getPortDefinition());
LocalLBPoolMemberMemberMonitorState newMonitorStateArray[][] = { { newMonitorState } };
LocalLBPoolMemberPortType lbpool = BigIP.getIControlInterFace().getLocalLBPoolMember();
lbpool.set_monitor_state(poolname, newMonitorStateArray);
return getPoolMemberMonitorState(member);
}
/**
* Set the state of a member to a given {@link CommonEnabledState}.
*
* @param member
* - Member to set the session state on.
* @param state
* - The {@link CommonEnabledState} to us.
* @return {@link CommonEnabledState} of the member after it has been set.
* @throws RemoteException
* @throws Exception
*/
public static CommonEnabledState setPoolMemberSessionState(BigIPPool.PoolMember member, CommonEnabledState state) throws RemoteException, Exception {
String[] poolname = new String[] { member.getBigIPPoolName() };
LocalLBPoolMemberMemberSessionState newSessionState = new LocalLBPoolMemberMemberSessionState();
newSessionState.setSession_state(state);
newSessionState.setMember(member.getPortDefinition());
iControl.LocalLBPoolMemberMemberSessionState monitorstatArray[][] = { { newSessionState } };
LocalLBPoolMemberPortType lbpool = BigIP.getIControlInterFace().getLocalLBPoolMember();
lbpool.set_session_enabled_state(poolname, monitorstatArray);
return getPoolMemberSessionState(member);
}
No RepliesBe the first to reply
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