Forum Discussion

mconnley_59873's avatar
mconnley_59873
Icon for Nimbostratus rankNimbostratus
Jun 07, 2012

iControl Command working w/ v10 but not 11

Hello,

My apologies if this has been asked already... I searched this forum and didn't find anything, so hopefully this isn't a duplicate question.

I use a VB.NET application to manage nodes and pool members. We've recently implemented a v11 device, and pool member operations that succeed against the v10.2.2 fail against the v11.1.0 device.

Here's what I'm doing...

Dim sessionState As New LocalLBPoolMemberMemberSessionState

sessionState.member.address = memberToManage.MemberIP

sessionState.member.port = memberToManage .Port

sessionState.session_state = CommonEnabledState.STATE_DISABLED

Dim MemberSessionStateAofA(1)() As LocalLBPoolMemberMemberSessionState

Array.Resize(MemberSessionStateAofA(0), 1)

MemberSessionStateAofA(0)(0) = sessionState

iControlClient.LocalLBPoolMember.set_session_enabled_state(New String() { memberToManage.PoolName}, MemberSessionStateAofA)

Obviously memberToManage contains the member details (IP, port, pool name as reported by the BigIP, etc.). In this case, memberToManage.MemberIP = 10.x.x.x and memberToManage.Port = 80. When executing against v10, it completes as expected. Against v11, I get this exception:

Exception caught in LocalLB::urn:iControl:LocalLB/PoolMember::set_session_enabled_state() Exception: Common::OperationFailed primary_error_code : 16908342 (0x01020036) secondary_error_code : 0 error_string : 01020036:3: The requested pool member (/xxPartitionName/xxPoolName /xxPartitionName/10.x.x.x 80) was not found.

 

(actual names redacted)

The pool name and pool member name returned in the exception are all correct, which leads me to believe it's finding something. Operations against NodeAddresses work as expected on the v11.

Am I doing something wrong?

Thanks in advance,

Matt

4 Replies

  • Hi Matt,

     

     

    first of all, I always thought you needed to allocate an IPPortDefinition structure for the sessionState.member value before assigning it values. But, you would have got a runtime exception if that was a problem. If you are indeed getting back an error stating that the valid poolname and poolmember doesn't exist when it really does, then this is likely a product support problem.

     

     

    One thing you might check is that in v11, we started a migration from the PoolMember interface back into the Pool interface. The PoolMember interface was marked deprecated and will eventually be removed. It should still work, but thought I'd bring that up. If you could try calling the LocalLB.Pool.set_member_session_enabled_state() method and seeing if that works. Info can be found here:

     

     

    https://devcentral.f5.com/wiki/iControl.LocalLB__Pool__set_member_session_enabled_state.ashx

     

     

    If that one works, then it's a problem with the implementation in the PoolMember.set_session_enabled_state() method.

     

     

    I'll see if I can get some testing time in to try it out on my 11.1 box and see if I can reproduce.

     

     

    -Joe

     

  • Another issue I just thought of could be a partition issue where you have your objects in a different partition than Common (which is the default). If so, you'll need to call the Management.Partition.set_active_partition() as defined here:

     

     

    https://devcentral.f5.com/wiki/iControl.Management__Partition__set_active_partition.ashx

     

     

    -Joe

     

  • Hi Joe,

     

     

    Thanks for the follow-up. As it turned out, it was the partition issue. Which I should have known... But I was thrown by the fact that I apparently don't have to set the active partition to manage nodes.

     

     

    Anyway, I'm good to go now, so thanks!
  • Note also that Management::Partition::set_active_folder was deprecated in version 11.0.0, as stated in the iControl SDK documentation and dev central.

     

     

    System::Session::set_active_folder is the method to use now.