add example of plugin to plugin call
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@16724 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
e2684acebe
commit
5c045ed61c
@ -20,6 +20,7 @@ use xCAT::TableUtils;
|
||||
use xCAT::ServiceNodeUtils;
|
||||
use xCAT::MsgUtils;
|
||||
use Getopt::Long;
|
||||
use strict;
|
||||
1;
|
||||
|
||||
#-------------------------------------------------------
|
||||
@ -51,7 +52,8 @@ sub preprocess_request
|
||||
{
|
||||
my $req = shift;
|
||||
my $callback = shift;
|
||||
my %sn;
|
||||
my $subreq = shift;
|
||||
$::CALLBACK = $callback;
|
||||
#if already preprocessed, go straight to request
|
||||
if (($req->{_xcatpreprocessed}) and ($req->{_xcatpreprocessed}->[0] == 1) ) { return [$req]; }
|
||||
my $nodes = $req->{node};
|
||||
@ -60,8 +62,8 @@ sub preprocess_request
|
||||
# find service nodes for requested nodes
|
||||
# build an individual request for each service node
|
||||
if ($nodes) {
|
||||
$sn = xCAT::ServiceNodeUtils->get_ServiceNode($nodes, $service, "MN");
|
||||
|
||||
my $sn = xCAT::ServiceNodeUtils->get_ServiceNode($nodes, $service, "MN");
|
||||
my @requests;
|
||||
# build each request for each service node
|
||||
|
||||
foreach my $snkey (keys %$sn)
|
||||
@ -93,7 +95,8 @@ sub process_request
|
||||
{
|
||||
|
||||
my $request = shift;
|
||||
$::CALLBACK = shift;
|
||||
my $callback = shift;
|
||||
my $subreq = shift;
|
||||
my $nodes = $request->{node};
|
||||
my $command = $request->{command}->[0];
|
||||
my $args = $request->{arg};
|
||||
@ -101,6 +104,7 @@ sub process_request
|
||||
my %rsp;
|
||||
my @nodes=@$nodes;
|
||||
@ARGV = @{$args}; # get arguments
|
||||
$::CALLBACK=$callback;
|
||||
# do your processing here
|
||||
# return info
|
||||
Getopt::Long::Configure("posix_default");
|
||||
@ -130,19 +134,28 @@ if (
|
||||
#$version .= "\n";
|
||||
my $rsp={};
|
||||
$rsp->{data}->[0] = $version;
|
||||
xCAT::MsgUtils->message("I",$rsp,$::CALLBACK, 0);
|
||||
xCAT::MsgUtils->message("I",$rsp,$callback, 0);
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# Here you call plugin to plugin
|
||||
# call another plugin
|
||||
# save your callback function
|
||||
|
||||
my $out=xCAT::Utils->runxcmd( { command => ['xdsh'],
|
||||
node => \@nodes,
|
||||
arg => [ "-v","ls /tmp" ]
|
||||
}, $subreq, 0,1);
|
||||
|
||||
|
||||
my $host=hostname();
|
||||
my $rsp={};
|
||||
$rsp->{data}->[0] = "Hello World from $host! I can process the following nodes:";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK, 0);
|
||||
foreach $node (@nodes)
|
||||
xCAT::MsgUtils->message("I", $rsp, $callback, 0);
|
||||
foreach my $node (@nodes)
|
||||
{
|
||||
$rsp->{data}->[0] .= "$node\n";
|
||||
}
|
||||
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK, 0);
|
||||
xCAT::MsgUtils->message("I", $rsp, $callback, 0);
|
||||
return;
|
||||
|
||||
}
|
||||
@ -178,4 +191,4 @@ sub usage
|
||||
$rsp->{data}->[0] = $usagemsg;
|
||||
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user