74 lines
1.7 KiB
Perl
Executable File
74 lines
1.7 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
BEGIN { $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : -d '/opt/xcat' ? '/opt/xcat' : '/usr'; }
|
|
use lib "$::XCATROOT/lib/perl";
|
|
#use Data::Dumper;
|
|
use xCAT::Client;
|
|
use Getopt::Long;
|
|
use strict;
|
|
my %output;
|
|
|
|
my $option;
|
|
my $printcount;
|
|
my $individual;
|
|
|
|
GetOptions("n"=>\$option,
|
|
"i"=>\$individual,
|
|
"c"=>\$printcount);
|
|
|
|
while (<STDIN>) {
|
|
my $node;
|
|
my $output;
|
|
if (/:/) {
|
|
($node,$output) = split /:/,$_,2;
|
|
} else {
|
|
$node= "UNKNOWN";
|
|
$output = $_;
|
|
}
|
|
$output =~ s/^ //;
|
|
$output{$node}.=$output;
|
|
}
|
|
my %collated;
|
|
unless ($individual) {
|
|
foreach (keys %output) {
|
|
$collated{$output{$_}}->{$_}=1;
|
|
}
|
|
}
|
|
|
|
my $nodes;
|
|
sub fillerup {
|
|
my $response = shift;
|
|
if ($response->{data}->[0]) {
|
|
$nodes = $response->{data}->[0];
|
|
}
|
|
}
|
|
if ($individual) {
|
|
foreach my $node (keys %output) {
|
|
print "====================================\n";
|
|
print "$node\n";
|
|
print "====================================\n";
|
|
print $output{$node};
|
|
print "\n";
|
|
}
|
|
exit(0);
|
|
}
|
|
foreach my $output (keys %collated) {
|
|
$nodes = join(',',sort (keys %{$collated{$output}}));
|
|
my $cmdref = {
|
|
noderange => [$nodes],
|
|
command => ['rnoderange'],
|
|
};
|
|
unless ($option) {
|
|
xCAT::Client::submit_request($cmdref,\&fillerup);
|
|
}
|
|
print "====================================\n";
|
|
print "$nodes\n";
|
|
print "====================================\n";
|
|
if ($printcount) {
|
|
print "Node count = ".scalar( keys %{$collated{$output}})." \n";
|
|
print "====================================\n";
|
|
}
|
|
print $output;
|
|
print "\n";
|
|
}
|