diff options
| -rwxr-xr-x | bin/icli | 44 | ||||
| -rw-r--r-- | t/50-icli.t | 7 | ||||
| -rw-r--r-- | t/out/list_queue | 31 | 
3 files changed, 79 insertions, 3 deletions
@@ -4,6 +4,7 @@ use strict;  use warnings;  use 5.010; +use Date::Format;  use Getopt::Long qw/:config bundling/;  use Term::ANSIColor; @@ -38,6 +39,11 @@ sub with_colour {  	}  } +sub pretty_date { +	my ($unix) = @_; +	return time2str('%Y-%m-%d %H:%M:%S', $unix); +} +  sub read_objects_line {  	my ($line, $ref) = @_; @@ -118,6 +124,37 @@ sub host_state {  	}  } +sub display_queue { +	my @queue = map  { $_->[0] } +	            sort { $a->[1] <=> $b->[1] } +	            map  { [$_, $_->{next_check}] } +	                 (values %{$data->{hosts}}, +	                  map { @{$_} } values %{$data->{services}}); + +	printf( +		"%-25.25s  %-20.20s  %-19s  %-19s\n", +		'Host', +		'Service', +		'Last Check', +		'Next Check', +	); + +	for my $e (@queue) { + +		if ($e->{next_check} == 0) { +			next; +		} + +		printf( +			"%-25.25s  %-20.20s  %-19s  %-19s\n", +			$e->{host_name}, +			$e->{service_description} // q{}, +			pretty_date($e->{last_check}), +			pretty_date($e->{next_check}), +		); +	} +} +  sub display_service {  	my ($s) = @_;  	printf( @@ -225,6 +262,9 @@ elsif ($list_type eq 'h') {  		display_host($host, 1);  	}  } +elsif ($list_type eq 'q') { +	display_queue(); +}  else {  	die("See perldoc -F $0\n");  } @@ -270,11 +310,11 @@ Show details for all hosts in I<hostgroup>  Only show I<host>'s services -=item B<-l>|B<--list> B<hosts>|B<services> +=item B<-l>|B<--list> B<hosts>|B<services>|B<queue>  List either services (the default) or hosts.  Note that only the first character of the argument is checked, so C<< icli --lh >> and C<< icli -ls >> are also fine. +-lh >>, C<< icli -ls >> etc. are also fine.  =item B<-s>|B<--short> diff --git a/t/50-icli.t b/t/50-icli.t index 53fe15a..d5a4b65 100644 --- a/t/50-icli.t +++ b/t/50-icli.t @@ -3,7 +3,7 @@ use strict;  use warnings;  use 5.010; -use Test::Command tests => (20*3); +use Test::Command tests => (21*3);  my $icli = 'bin/icli -f t/in/status.dat -c t/in/objects.cache'; @@ -75,6 +75,11 @@ $cmd->exit_is_num(0);  $cmd->stdout_is_file('t/out/list_services_single');  $cmd->stderr_is_eq($EMPTY); +$cmd = Test::Command->new(cmd => "$icli -lq"); +$cmd->exit_is_num(0); +$cmd->stdout_is_file('t/out/list_queue'); +$cmd->stderr_is_eq($EMPTY); +  $cmd = Test::Command->new(cmd => "$icli -g invalid");  $cmd->exit_isnt_num(0); diff --git a/t/out/list_queue b/t/out/list_queue new file mode 100644 index 0000000..4d2d651 --- /dev/null +++ b/t/out/list_queue @@ -0,0 +1,31 @@ +Host                       Service               Last Check           Next Check          +aneurysm                   SMTP                  2010-07-28 10:43:36  2010-07-28 10:48:36 +aneurysm                   Disk: /data           2010-07-28 10:43:45  2010-07-28 10:48:45 +steel.derf0.net            HTTP                  2010-07-28 10:43:53  2010-07-28 10:48:53 +aneurysm                   Disk: /boot           2010-07-28 10:44:01  2010-07-28 10:49:01 +steel.derf0.net            Disk: lv-root         2010-07-28 10:44:44  2010-07-28 10:49:44 +aneurysm                   Disk: /home           2010-07-28 10:44:56  2010-07-28 10:49:56 +steel.derf0.net            SMTP                  2010-07-28 10:45:21  2010-07-28 10:50:21 +steel.derf0.net            SSH password login d  2010-07-28 10:35:27  2010-07-28 10:50:27 +aneurysm                   Load                  2010-07-28 10:45:31  2010-07-28 10:50:31 +steel.derf0.net            Disk: lv-home         2010-07-28 10:45:33  2010-07-28 10:50:33 +steel-vpn                                        2010-07-28 10:45:26  2010-07-28 10:50:36 +steel-vpn                  SMTP                  2010-07-28 10:45:37  2010-07-28 10:50:37 +aneurysm                   Processes             2010-07-28 10:45:48  2010-07-28 10:50:48 +steel.derf0.net            Processes             2010-07-28 10:45:52  2010-07-28 10:50:52 +alpha                      HTTP                  2010-07-28 10:46:02  2010-07-28 10:51:02 +aneurysm                   HTTPS                 2010-07-28 10:46:06  2010-07-28 10:51:06 +aneurysm                   Disk: /               2010-07-28 10:46:21  2010-07-28 10:51:21 +steel.derf0.net            Mail Queue            2010-07-28 10:46:39  2010-07-28 10:51:39 +steel.derf0.net            Users                 2010-07-28 10:47:09  2010-07-28 10:52:09 +steel.derf0.net            SSH                   2010-07-28 10:47:17  2010-07-28 10:52:17 +aneurysm                                         2010-07-28 10:47:26  2010-07-28 10:52:36 +aneurysm                   HTTP                  2010-07-28 10:48:18  2010-07-28 10:53:18 +steel.derf0.net            Load                  2010-07-28 10:48:19  2010-07-28 10:53:19 +steel.derf0.net            Disk: vda1            2010-07-28 10:48:20  2010-07-28 10:53:20 +steel.derf0.net                                  2010-07-28 10:48:16  2010-07-28 10:53:26 +aneurysm                   SSH                   2010-07-28 10:48:33  2010-07-28 10:53:33 +alpha                                            2010-07-28 10:48:26  2010-07-28 10:53:36 +aneurysm                   SSH password login d  2010-07-28 10:47:48  2010-07-28 11:02:48 +steel.derf0.net            Not Blacklisted       2010-07-28 10:28:42  2010-07-28 11:28:42 +steel.derf0.net            No open relay         2010-07-28 10:47:00  2010-07-28 11:47:00  | 
