- print STDERR "Running $amadmin $opt_config find\n";
-my $fh = new FileHandle "$amadmin $opt_config find|" or
- die "$0: error in opening `$amadmin $opt_config find' pipe: $!\n";
-<$fh>;
-while (<$fh>) {
- chomp;
- next if /found Amanda directory/;
- next if /skipping cruft directory/;
- next if /skip-incr/;
-
- ($date, $time, $host, $disk, $level, $tape, $file, $part, $status, $remaining) = shellwords($_);
-
- next if $date eq 'date';
- next if $date eq 'Warning:';
- next if $date eq 'Scanning';
- next if $date eq "";
-
- $status .= " " . $remaining;
- if($time !~/^\d\d:\d\d:\d\d$/) {
- $status = $part;
- $part = $file;
- $file = $tape;
- $tape = $level;
- $level = $disk;
- $disk = $host;
- $host = $time;
- }
- next if ($part != 1);
-
- if ($date =~ /^\d\d\d\d-\d\d-\d\d$/) {
- if(defined $disks{$host}{$disk}) {
- defined($level{$host}{$disk}{$date}) or
- $level{$host}{$disk}{$date} = '';
- $level{$host}{$disk}{$date} .= ($status eq 'OK') ? $level : 'E';
- $dates{$date}++;
- }
- }
- else {
- print "bad date $date in $_\n";
+ print STDERR "Processing $opt_config dumps\n";
+foreach my $dump (Amanda::DB::Catalog::sort_dumps(['hostname','diskname','write_timestamp'],Amanda::DB::Catalog::get_dumps())) {
+ $host = $dump->{"hostname"};
+ $disk = $dump->{"diskname"};
+ $date = substr($dump->{"dump_timestamp"},0,8);
+
+ if (defined $disks{$host}{$disk}) {
+ defined($level{$host}{$disk}{$date}) or
+ $level{$host}{$disk}{$date} = '';
+ $level{$host}{$disk}{$date} .= ($dump->{"status"} eq 'OK') ? $dump->{"level"} : 'E';
+ $dates{$date}++;