1 #!/afs/athena/contrib/perl/perl
3 require "/moira/bin/afs_utils.pl";
6 # Nightly reaper - Recompute all usages/allocations.
9 local ($key, @vos, %used,%alloc,%total, %a);
10 local ($c,$as,$ap,$total,$used,$alloc);
12 if (open(TMP,"/afs/athena.mit.edu/service/afs_data")) {
20 ($c,$as,$ap) = split(/\s+/,$_);
21 ($as) = gethostbyname($as) unless ($c =~ /^\#/);
24 $ap =~ s:^([^/]):/vicep\1:;
25 $ok{"$c $as $ap"} = 1;
30 ($c,$as,$ap,$type) = split(/\s+/,$_);
31 ($as) = gethostbyname($as);
34 $ap =~ s:^([^/]):/vicep\1:;
36 next unless ($as && $ap);
41 ($c2,$as2,$ap2) = split(/\s+/,$_);
42 next unless ($c2 =~ /^\#/ || $ok{"$c2 $as2 $ap2"});
43 print SRV $_ unless ($c eq $c2 && $as eq $as2 && $ap eq $ap2);
47 open(VOS,"$vos partinfo $as $ap -cell $c -noauth|");
51 @vos = split(/\s+/,$vos[0]);
53 $used = $total-$vos[5];
56 open(VOS,"$vos listvol $as $ap -cell $c -long -noauth|");
61 while ($_ = shift(@vos)) {
62 next unless /On-line/;
63 local($vn,$id) = split(/\s+/, $_);
65 local($p,$p,$p) = split(/\s+/, shift(@vos));
66 local($q,$q,$q) = split(/\s+/, shift(@vos));
67 if ($id==$p || !$a{$p}) {
71 for $p (keys %a) { $alloc += $a{$p}; delete $a{$p}; }
75 print SRV "$c $as $ap $type $total $used $alloc\n";