#!/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 () { 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"; }