Ian_McKenna_113
Jun 20, 2006Nimbostratus
How to get all Pools for a Node
Hi,
I am trying to display all the pools for a node.
I have set "use iControlTypeCast", but still I have problems displaying the get_member method;
Has any body an idea?
thanks in advance
Ian
sub execute
{
my $sHost = shift @_;
my $sPort = shift @_;
my $sUID = shift @_;
my $sPWD = shift @_;
my $sNode = shift @_;
my $sProtocol = "https";
if ( ("80" eq $sPort) or ("8080" eq $sPort) )
{
$sProtocol = "http";
}
my $NodeAddress = SOAP::Lite
-> uri('urn:iControl:LocalLB/NodeAddress')
-> proxy("$sProtocol://$sHost:$sPort/iControl/iControlPortal.cgi");
eval { $NodeAddress->transport->http_request->header
(
'Authorization' =>
'Basic ' . MIME::Base64::encode("$sUID:$sPWD", '')
); };
my $PoolList = SOAP::Lite
-> uri('urn:iControl:LocalLB/Pool')
-> proxy("$sProtocol://$sHost:$sPort/iControl/iControlPortal.cgi");
eval { $PoolList->transport->http_request->header
(
'Authorization' =>
'Basic ' . MIME::Base64::encode("$sUID:$sPWD", '')
); };
---------------- idev -------
my $node_address;
my $soapResponse = $NodeAddress->get_list();
&checkResponse($soapResponse);
my @node_list = @{$soapResponse->result};
my @node_name;
my$i = 0;
if ($sNode eq "")
{
foreach $node_address (@node_list)
{
printf "----------------------------------\n";
printf("NODE %15s \n", $node_address);
&getData($node_address, $NodeAddress, $PoolList);
$i++;
}
}
else
{
foreach $node_address (@node_list)
{
if ($sNode eq $node_address)
{
printf("NODE %15s \n", $node_address);
&getData($node_address, $NodeAddress, $PoolList);
}
$i++;
}
}
SUCCESS;
}
sub getData
{
my $node_address = shift @_;
my $NodeAddress = shift @_;
my $PoolList = shift @_;
my @value_name;
my $value;
my $single_value;
my @pool_list;
my $pool_value;
my $port_value;
my $address_value;
my $soapResponse_1;
my $soapResponse = $NodeAddress->get_screen_name(
SOAP::Data->name( node_addresses => [$node_address] ));
&checkResponse($soapResponse);
@value_name = @{$soapResponse->result};
printf("Name - %20s \n", @value_name);
$soapResponse = $PoolList->get_list();
&checkResponse($soapResponse);
@pool_list = @{$soapResponse->result};
foreach $pool_value (@pool_list)
{
printf("Pool %25s \n", $pool_value);
$soapResponse_1 = $PoolList->get_member(
SOAP::Data->name( pool_names => [$pool_value] ));
&checkResponse($soapResponse_1);
@value_name = @{$soapResponse_1->result};
foreach $value (@value_name)
{
$address_value = $value -> "address"};
$port_value = $value -> {"port"};
printf("Addess %25s \n", $address_value);
printf("Port %25s \n", $port_value);
}
}
}