Forum Discussion
Bencheng31_1149
Jun 24, 2013Nimbostratus
I am a beginner on doing perl scirpt using iControl, I am trying to modify a perl script poolToggle.pl download from F5 DevCentral samples with replacing the methods deprecated in v11.0, "set_member_session_enabled_state" is one of the methods I used to replace the "set_session_enabled_state". As there is one more parameter "members" required, I have used "get_member_v2" method to return the member list from the pool. And I am encountering error "Cannot convert a struct to a string" when the scripting running at below sub routine.
error message: SOAP-ENV:Server Cannot convert a struct to a string.
I have added some print actions for indicating the point of failure, and it should be at set_member_session_enabled_state, would you kindly help to advise how to fix the error? Many thanks.
==============
sub setPoolMemberStates()
{
my ($pool, $state) = (@_);
Get a list of pool members
$soapResponse = $Pool->get_member_v2
(
SOAP::Data->name(pool_names => [$pool])
);
&checkResponse($soapResponse);
@member_lists = @{$soapResponse->result};
print "got member lists";
Extract the 1st list for the single pool passed in.
@member_list = @{@member_lists[0]};
build parameters for set_session_enabled_state();
foreach $member_def (@member_list)
{
$address = $member_def->{"address"};
$port = $member_def->{"port"};
$member = { address => $address, port => $port };
$MemberSessionState =
{
member => $member,
session_state => $state
};
push @MemberSessionStateList, $MemberSessionState;
}
push @MemberSessionStateLists, [@MemberSessionStateList];
print "members session state array built";
Set the session enabled state
$soapResponse = $Pool->set_member_session_enabled_state
(
SOAP::Data->name(pool_names => [$pool]),
SOAP::Data->name(members => [@member_lists]),
SOAP::Data->name(session_states => [@MemberSessionStateLists])
);
&checkResponse($soapResponse);
print "session state done";
build parameters for set_monitor_state();
foreach $member (@member_list)
{
$MemberMonitorState =
{
member => $member,
monitor_state => $state
};
push @MemberMonitorStateList, $MemberMonitorState;
}
push @MemberMonitorStateLists, [@MemberMonitorStateList];
print "action on monitror state";
set the monitor state
$soapResponse = $Pool->set_member_monitor_state
(
SOAP::Data->name(pool_names => [$pool]),
SOAP::Data->name(members => [@member_lists]),
SOAP::Data->name(monitor_states => [@MemberMonitorStateLists])
);
&checkResponse($soapResponse);
}