#!/usr/bin/perl -w # Lists the available software packages use Pod::Usage; use Getopt::Long; use SOAP::Lite; use strict; # Global options our $opt_version; our $opt_help; our $opt_man; our $opt_resource = 'http://www.osdl.org/WebService/TestSystem'; our $opt_server = 'http://localhost:8081/'; # Handle commandline options Getopt::Long::Configure ('bundling', 'no_ignore_case'); GetOptions( 'version|V' => \$opt_version, 'help|h' => \$opt_help, 'man' => \$opt_man, 'server|s=s' => \$opt_server, 'resource|r=s' => \$opt_resource, ); # Handle -V or --version if ($opt_version) { print '$0: $Revision: 1.2 $', "\n"; exit 0; } # Usage pod2usage(-verbose => 2, -exitstatus => 0) if ($opt_man); pod2usage(-verbose => 1, -exitstatus => 0) if ($opt_help); exit main(); sub main { # Connect to the server my $soap = create_soap_instance($opt_resource, $opt_server); # Create the test service object my $response = $soap->call(new => 1); soap_assert($response); my $testsys = $response->result; if (! $testsys) { die "Could not create testsys object\n"; } $response = $soap->get_software_types($testsys); soap_assert($response); if (! $response->result) { warn "No results received\n"; return -1; } foreach my $row (@{$response->result}) { print $row->{software_type}, "\n"; } return 1; } # Convenience function to create the soap instance sub create_soap_instance { my $resource = shift || return undef; my $server = shift || return undef; my $soap = SOAP::Lite -> uri($resource) -> proxy($server, options => {compress_threshold => 10000}); return $soap; }; # Convenience function to print out any errors encountered in a soap call # and exit. sub soap_assert { my $response = shift; if ($response->fault) { print join ', ', $response->faultcode, $response->faultstring; return undef; } return 1; } __END__ =head1 NAME stp-lssw - lists the types of software in the test system =head1 SYNOPSIS stp-lssw [options] =head1 DESCRIPTION This tool prints a list of the available software types that tests can be run against. =head1 OPTIONS =over 8 =item B<-V>, B<--version> Displays the version number of the script and exits. =item B<-h>, B<--help> Displays a brief usage message =item B<--man> Displays the man page =item B<-s> I<server_url>, B<--server>=I<server_url> The URL of the WebService::TestSystem server to connect to. By default, it uses 'http://localhost:8081'. =item B<-r> I<resource_uri>, B<--resource>=I<resource_uri> The URI of the service provided by the server. By default, it uses 'http://www.osdl.org/WebService/TestSystem'. Users should not typically need to alter this setting. =back =head1 PREREQUISITES B<SOAP::Lite>, B<Pod::Usage>, B<Getopt::Long> =head1 AUTHOR Bryce Harrington E<lt>bryce@osdl.orgE<gt> =head1 COPYRIGHT Copyright (C) 2004 Open Source Development Labs All Rights Reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 REVISION Revision: $Revision: 1.2 $ =cut