40e144b4cc
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@13467 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
160 lines
3.4 KiB
Perl
160 lines
3.4 KiB
Perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
#-------------------------------------------------------
|
|
|
|
=head1
|
|
xCAT plugin package to handle sinv
|
|
|
|
Supported command:
|
|
sinv - software/firmware inventory program
|
|
run xdsh or rinv. See man sinv.
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------
|
|
package xCAT_plugin::sinv;
|
|
use strict;
|
|
|
|
require xCAT::Utils;
|
|
require xCAT::TableUtils;
|
|
require xCAT::ServiceNodeUtils;
|
|
require xCAT::MsgUtils;
|
|
require xCAT::SINV;
|
|
use Getopt::Long;
|
|
|
|
|
|
#-------------------------------------------------------
|
|
|
|
=head3 handled_commands
|
|
|
|
Return list of commands handled by this plugin
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------
|
|
|
|
sub handled_commands
|
|
{
|
|
return {sinv => "sinv",};
|
|
}
|
|
|
|
#-------------------------------------------------------
|
|
|
|
=head3 preprocess_request ( handles hierachy, TBD)
|
|
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------
|
|
#sub preprocess_request
|
|
#{
|
|
# my $req = shift;
|
|
# my $cb = shift;
|
|
# $::CALLBACK = $cb;
|
|
# my %sn;
|
|
# my $sn;
|
|
# if ($req->{_xcatpreprocessed}->[0] == 1) { return [$req]; }
|
|
# my $nodes = $req->{node};
|
|
# my $service = "xcat";
|
|
# my @requests;
|
|
# #display usage statement if -h and version if -v
|
|
# my $extrargs = $req->{arg};
|
|
# my @exargs=($req->{arg});
|
|
# if (ref($extrargs)) {
|
|
# @exargs=@$extrargs;
|
|
# }
|
|
# @ARGV=@exargs;
|
|
# $Getopt::Long::ignorecase=0;
|
|
# if(!GetOptions(
|
|
# 'h|help' => \$::HELP,
|
|
# 'v|version' => \$::VERSION)) {
|
|
# $req= {};
|
|
# #return;
|
|
# }
|
|
# if ($::HELP) {
|
|
# xCAT::SINV->usage();
|
|
# $req = {};
|
|
# return;
|
|
# }
|
|
# if ($::VERSION) {
|
|
# my $version = xCAT::Utils->Version();
|
|
# $version .= "\n";
|
|
# my $rsp = {};
|
|
# $rsp->{data}->[0] = $version;
|
|
# xCAT::MsgUtils->message("I", $rsp, $cb);
|
|
# $req= {};
|
|
# return;
|
|
# }
|
|
# if ($nodes) {
|
|
# # find service nodes for requested nodes
|
|
# # build an individual request for each service node
|
|
# $sn = xCAT::ServiceNodeUtils->get_ServiceNode($nodes, $service, "MN");
|
|
#
|
|
# # build each request for each service node
|
|
#
|
|
# foreach my $snkey (keys %$sn)
|
|
# {
|
|
# my $reqcopy = {%$req};
|
|
# $reqcopy->{node} = $sn->{$snkey};
|
|
# $reqcopy->{'_xcatdest'} = $snkey;
|
|
# $reqcopy->{_xcatpreprocessed}->[0] = 1
|
|
# push @requests, $reqcopy;
|
|
#
|
|
# }
|
|
# } else { # no nodes
|
|
# my $rsp = {};
|
|
# $rsp->{data}->[0] = "No noderange specified on the command.\n";
|
|
# xCAT::MsgUtils->message("E", $rsp, $cb);
|
|
# $req= {};
|
|
# return;
|
|
#
|
|
# }
|
|
# return \@requests;
|
|
# }
|
|
#
|
|
#-------------------------------------------------------
|
|
|
|
=head3 process_request
|
|
|
|
Process the command
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------
|
|
sub process_request
|
|
{
|
|
|
|
my $request = shift;
|
|
my $callback = shift;
|
|
my $sub_req = shift;
|
|
|
|
sinv($request, $callback,$sub_req);
|
|
}
|
|
|
|
#-------------------------------------------------------
|
|
|
|
=head3 sinv
|
|
|
|
Parses Builds and runs the sinv
|
|
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------
|
|
sub sinv
|
|
{
|
|
my ($request, $callback, $sub_req) = @_;
|
|
|
|
|
|
# parse input and run dsh
|
|
my @local_results =
|
|
xCAT::SINV->parse_and_run_sinv($request, $callback,
|
|
$sub_req);
|
|
my $rsp = {};
|
|
push @{$rsp->{data}}, @local_results;
|
|
|
|
xCAT::MsgUtils->message("I", $rsp, $callback);
|
|
|
|
return;
|
|
}
|
|
1;
|