Forum Discussion
Tim_Vaudt_11296
Jun 06, 2012Nimbostratus
HTTP 500 Internal Server Error from iControl on LTM 10.2.0
When sending a SOAP request to the F5 API using a perl script to connect to the API to query for a list of LocalLB/VirtualServer members, the F5 is returning a 500 Internal Server error. The XML/SOAP...
John_Gruber_432
Jun 06, 2012Historic F5 Account
500 errors are server side errors. The server side of iControl is on the BigIP and is an F5 process. You can rightfully open a support ticket. Besides the normal qkview, they are going to want an XML dump of the SOAP interaction (using the trace function in SOAP::Lite package make this really easy). The qkview is going to include the Apache error logs, but the error message you are getting returned the Apache server default verbage and not XML. That typically means the iControl process handling that request likely did not return or exited without returning anything to Apache. The leading cause of this is passing it bad XML in the SOAP request. Not surprising if you are rolling your own request messages.
If you want to see if it is just bad XML getting sent to the BigIP before opening the ticket, please try LocalLB::VirtualServer.get_list which requires no arguments to be passed in which you need to encode in a list and makes sure you are not having other problems in the stack. How manual are your 'XML' messages, or are you letting SOAP::Lite do that for you? If your are not letting SOAP::Lite do it for you, why not? (I understand if you aren't.. it is a slow pig of a SOAP client)
My homegrown iControl PM which uses SOAP::Lite has request / response wrappers in functions which handle errors / caching etc.. so a code snippet from my examples would not be helpful, but if you are using SOAP::Lite your call should look something like this in perl:
my $urn = "urn:iControl:LocalLB/VirtualServer";
my $request = SOAP::Lite
-> uri($urn)
-> readable(1)
-> proxy($self->{bigipprotocol}."://".$self->{bigiphost}.":".$self->{bigipport}."/iControl/iControlPortal.cgi",
credentials => [
$bigiphost.":".$bigipport,
'BIG-IP',
$bigipuser => $self->{bigippassword},
]
);
my @virtualserver = ("]vs_QWWW201-443");
$request->get_destination(
SOAP::Data->name(virtual_servers=>[@virtualservers])
);
$IPPortDefinitionList = $response->result;
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