HOWTO Call the Server Using SOAP::Lite
#!/usr/bin/perl
######################################################
# package DeviceService #
######################################################
package DeviceService;
use strict;
use Defaults;
my $server = $Defaults::SERVER;
my $username = $Defaults::USERNAME;
my $password = $Defaults::PASSWORD;
my $timeout = $Defaults::TIMEOUT;
my $ns1 = $Defaults::NS1;
my $DEFAULT = $Defaults::NETWORK;
my $PROXY = "https://$server:8080/server/devices";
my $NAMESPACE = 'http://www.ziptie.org/server/devices';
my $METHOD;
my @parms = ();
use SOAP::Lite
on_fault => sub {
my($soap, $res) = @_;
die ref $res ? $res->faultdetail : $soap->transport->status, "\n";
};
sub SOAP::Transport::HTTP::Client::get_basic_credentials { return $username=> $password; }
sub setServerParms
{
if ( $_[0] ) {
$server = $_[0];
$PROXY = "https://$server:8080/server/devices";
}
$username = $_[1] if $_[1];
$password = $_[2] if $_[2];
return $server;
}
######################################################
# createDevice Method #
######################################################
sub createDevice {
my $URI = "createDevice";
my ($ip, $mn, $ad) = @_;
@parms = (
SOAP::Data->name('ipAddress')->value($ip),
SOAP::Data->name('managedNetwork')->value($mn),
SOAP::Data->name('adapterId')->value($ad)
);
$METHOD = 'createDevice(@parms)'; # Method we are trying to exercise
my %can;
my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
$soap->ns($NAMESPACE,$ns1);
$can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
my $res = eval "\$soap->$METHOD; ";
$@ ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
$can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM') ? return(join "\n", "--- METHOD RESULT ---", $res || '', '') :
defined($res) && $res->fault ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
!$soap->transport->is_success ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
return ($res->paramsall);
# return performOP($URI, $PROXY, $NAMESPACE, $METHOD);
}
######################################################
# deleteDevice Method #
######################################################
sub deleteDevice
{
my $URI = "deleteDevice";
my ($ip, $mn) = @_;
@parms = (
SOAP::Data->name('ipAddress')->value($ip),
SOAP::Data->name('managedNetwork')->value($mn)
);
my $METHOD = 'deleteDevice(@parms)';
my %can;
my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
$soap->ns($NAMESPACE,$ns1);
$can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
my $res = eval "\$soap->$METHOD; ";
$@ ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
$can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM') ? return(join "\n", "--- METHOD RESULT ---", $res || '', '') :
defined($res) && $res->fault ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
!$soap->transport->is_success ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
return ($res->paramsall);
}
######################################################
# getDevice Method #
######################################################
sub getDevice
{
my $URI = "getDevice";
my ($ip, $mn) = @_;
if ($mn)
{
@parms = (
SOAP::Data->name('ipAddress')->value($ip),
SOAP::Data->name('managedNetwork')->value($mn)
);
} else
{
@parms = ( SOAP::Data->name('ipAddress')->value($ip) );
}
my $METHOD = 'getDevice(@parms)';
my %can;
my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
$soap->ns($NAMESPACE,$ns1);
$can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
my $res = eval "\$soap->$METHOD; ";
$@ ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
$can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM') ? return(join "\n", "--- METHOD RESULT ---", $res || '', '') :
defined($res) && $res->fault ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
!$soap->transport->is_success ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
return ($res->paramsall);
}
######################################################
# createDeviceBatched #
######################################################
sub createDeviceBatched
{
my $URI = "createDeviceBatched";
my @deviceList = @_;
@parms = ();
for (my $i = 0; $i < scalar (@deviceList); $i++)
{
my ($ad, $hn, $ip, $mn) = split (/,/, $deviceList[$i]);
my $device = SOAP::Data->name("devices"=>
\SOAP::Data->value(SOAP::Data->name("adapterId" => $ad),
SOAP::Data->name("hostname" => $hn),
SOAP::Data->name("ipAddress" => $ip),
SOAP::Data->name("managedNetwork" => $mn)));
push (@parms, $device);
}
my $METHOD = 'createDeviceBatched(@parms)';
my %can;
my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
$soap->ns($NAMESPACE,$ns1);
$can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
my $res = eval "\$soap->$METHOD; ";
$@ ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
$can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM') ? return(join "\n", "--- METHOD RESULT ---", $res || '', '') :
defined($res) && $res->fault ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
!$soap->transport->is_success ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
return ($res->paramsall);
}
######################################################
# getDeviceLites method #
######################################################
sub getDeviceLites
{
my $URI = "getDeviceLites";
my @list = @_;
@parms = ();
# print Dumper (@parms);
for (my $i = 0; $i < scalar (@list); $i++)
{
my $device = SOAP::Data->name("devices"=> SOAP::Data->value($list[$i]));
push (@parms, $device);
}
$METHOD = 'getDeviceLites(@parms)';
my %can;
my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
$soap->ns($NAMESPACE,$ns1);
$can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
my $res = eval "\$soap->$METHOD; ";
$@ ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
$can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM') ? retrun(join "\n", "--- METHOD RESULT ---", $res || '', '') :
defined($res) && $res->fault ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
!$soap->transport->is_success ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
return ($res->paramsall);
}
sub getAllHardwareVendors
{
my $URI = "getAllHardwareVendors";
my $METHOD = "getAllHardwareVendors";
my %can;
my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
$soap->ns($NAMESPACE,$ns1);
$can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
my $res = eval "\$soap->$METHOD; ";
$@ ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
$can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM') ? retrun(join "\n", "--- METHOD RESULT ---", $res || '', '') :
defined($res) && $res->fault ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
!$soap->transport->is_success ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
return ($res->paramsall);
}
sub updateDevice
{
my ($URI, $METHOD);
$URI = "updateDevice";
my ($ip, $mn, $newAd, $hn, $newIp, $newMn) = @_;
# per brett only $mn and $newMn are optional
$mn = $DEFAULT if (!$mn);
$newMn = $DEFAULT if (!$newMn);
my $dObj = getDevice($ip, $mn);
die "Device does not exist " if ref $dObj ne "HASH";
$hn = $dObj->{'hostname'} if (! $hn);
$newIp = $dObj->{'ipAddress'} if (! $newIp);
$newAd = $dObj->{'adapterId'} if (! $newAd);
$newMn = $dObj->{'managedNetwork'} if (! $newMn);
my @parms = ();
@parms = (
SOAP::Data->name('ipAddress')->value($ip),
SOAP::Data->name('managedNetwork')->value($mn),
SOAP::Data->name("device"=>
\SOAP::Data->value(SOAP::Data->name("adapterId" => $newAd),
SOAP::Data->name("hostname" => $hn),
SOAP::Data->name("ipAddress" => $newIp),
SOAP::Data->name("managedNetwork" => $newMn)))
);
$METHOD = 'updateDevice(@parms)';
my %can;
my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
$soap->ns($NAMESPACE,$ns1);
$can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
my $res = eval "\$soap->$METHOD; ";
$@ ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
$can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM') ? return(join "\n", "--- METHOD RESULT ---", $res || '', '') :
defined($res) && $res->fault ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
!$soap->transport->is_success ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
return ($res->paramsall);
}