From 2006d2c7d1c0423a591adeabcf38c76a67532639 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 30 Oct 2011 22:00:40 +0100 Subject: [PATCH] bq: --by-host, shows status --- bq | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/bq b/bq index 89bfa3f..55ef177 100755 --- a/bq +++ b/bq @@ -5,28 +5,60 @@ use strict; use warnings; use Getopt::Long; +use POSIX; use lib 'lib'; use BEX; +my $by_host; my $queue_name; GetOptions( + "h|by-host!" => \$by_host, "q|queue=s" => \$queue_name, ) or die <] [[!] ...] Options: +-h, --by-host Show jobs sorted by host (default: by job) -q, --queue= Show jobs in the given queue AMEN my @machines = BEX::Config::parse_machine_list(@ARGV ? @ARGV : '*'); my $queue = BEX::Queue->new($queue_name); + +my %jobs = (); +my %machs = (); +my %subj = (); +my %stat = (); for my $m (@machines) { - print "$m:\n"; - my @q = $queue->scan($m); - for my $j (@q) { + for my $j ($queue->scan($m)) { + push @{$jobs{$j}}, $m; + push @{$machs{$m}}, $j; my $job = $queue->job_metadata($j); - print "\t$j (", $job->attr('Subject'), ")\n"; + $subj{$j} = ' (' . $job->{'Subject'} . ')'; + my $st = $queue->read_job_status($m, $j); + if (defined($st->{'Time'}) && defined($st->{'Status'})) { + $stat{$m}{$j} = ' [' . $st->{'Status'} . ' on ' . + POSIX::strftime('%Y-%m-%d', localtime $st->{'Time'}) . ']'; + } else { + $stat{$m}{$j} = ''; + } + } +} + +if ($by_host) { + for my $m (sort keys %machs) { + print "$m\n"; + for my $j (@{$machs{$m}}) { + print "\t$j", $subj{$j}, $stat{$m}{$j}, "\n"; + } + } +} else { + for my $j (sort keys %jobs) { + print $j, $subj{$j}, "\n"; + for my $m (sort @{$jobs{$j}}) { + print "\t$m", $stat{$m}{$j}, "\n"; + } } } -- 2.39.2