mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	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:
		@@ -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;
 | 
			
		||||
} 
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user