Forum Discussion

Chris_Bolt_1572's avatar
Chris_Bolt_1572
Icon for Nimbostratus rankNimbostratus
Feb 24, 2009

MemberMonitorStateSequenceSequence corrupted in SoapClient call

Using PHP's SoapClient to attempt to disable a pool member:

     
  $baseurl = "https://lb01/iControl/iControlPortal.cgi";     
 $s = new SoapClient("$baseurl?WSDL=LocalLB.PoolMember", array(     
 'location' => $baseurl,     
 'login'    => 'login',     
 'password' => 'password',     
 'trace'    => true,     
 ));     
 $pools = array('web_backend_http');     
 $member = (object)array('address' => '10.0.1.1', 'port' => 80);     
 $states = (object)array('member' => $member, 'monitor_state' => 'STATE_DISABLED');     
 var_dump($s->set_monitor_state($pools, array($states)));     
 var_dump($s->__getLastRequest());     
 var_dump($s->__getLastResponse());     
 ?>     
 

The set_monitor_state() call returns null. When I look at what's being sent in the request, the second parameter to the soap call, with the states, is being corrupted somehow:

     
  xmlns:ns1="urn:iControl:LocalLB/PoolMember"    
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"    
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="urn:iControl"   
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">    
     
     
     
 web_backend_http    
     
  xsi:type="ns2:LocalLB.PoolMember.MemberMonitorStateSequenceSequence">    
     
     
     
 
  • Apparently it required one more level of array-ness for the $states.

       
     var_dump($s->set_monitor_state($pools, array(array($states))));   
     

    works, but returns null on success.