From: Ian Jackson Date: Wed, 7 Jul 2010 13:10:11 +0000 (+0100) Subject: allow merging of name-mapped news sources X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ijackson/git?p=rrd-graphs.git;a=commitdiff_plain;h=cc86864ea090521271314b0deb48f80fc63d7f63 allow merging of name-mapped news sources --- diff --git a/cgi b/cgi index e0e90b8..5133ffb 100755 --- a/cgi +++ b/cgi @@ -161,7 +161,7 @@ if (!open NM, '<', "$SELF/data/news/name-map") { } } -our @news_graphs; +our %news_sources; foreach my $src (<$SELF/data/news/*.rrd>) { my $site= $src; @@ -174,23 +174,52 @@ foreach my $src (<$SELF/data/news/*.rrd>) { my $newsite= $news_name_map{$site,$inout}; $site= $newsite if defined $newsite; next if $site eq '-'; - #my $sk= join '.', reverse split /\./, $site; + push @{ $news_sources{$site}{$inout} }, $src; +} + +our @news_graphs; + +foreach my $site (keys %news_sources) { my $sk= $site; - $sk .= " $&" if $sk =~ s/^[^.]*(?:news|nntp|peer)[^.]*\.//; - $sk .= " $inout"; - push @news_graphs, [ $sk, $site, $inout, $src ]; + for (;;) { + last unless $sk =~ + s/^[^.]*(?:chiark|greenend|news|nntp|peer|feed|in|out)[^.]*\.//; + $sk .= " $&"; + } + foreach my $inout (keys %{ $news_sources{$site} }) { + push @news_graphs, [ "$sk $inout", $site, $inout ]; + } } foreach my $siteinfo (sort { $a->[0] cmp $b->[0] } @news_graphs) { - my ($sortkey, $site, $inout, $src)= @$siteinfo; + my ($sortkey, $site, $inout)= @$siteinfo; + my @sources= @{ $news_sources{$site}{$inout} }; + + my @vals= $inout eq 'out' + ? qw(missing deferred unwanted accepted rejected body_missing) + : qw(accepted refused rejected duplicate + accepted_size duplicate_size); + my @defs; + foreach my $val (@vals) { + my $def= "CDEF:$val=0"; + foreach my $si (0..$#sources) { + my $src= $sources[$si]; + my $tvar= "${val}_${si}"; + push @defs, "DEF:$tvar=$src:$val:AVERAGE"; + $def .= ",$tvar,ADDNAN"; + } + push @defs, $def; + if ($val =~ m/_size$/) { + push @defs, "CDEF:kb_$`=$val,1024,/"; + } + } graph_of_group("News", $site, $inout, { Units => '[art/s]', TimeRanges => [ map { $_*86400 } qw(1 7 31), 366, 366*3 ] }, $inout eq 'out' ? [ - (map { "DEF:$_=$src:$_:AVERAGE" } - qw(missing deferred unwanted accepted rejected body_missing)), + @defs, "AREA:accepted#00f:ok", "AREA:body_missing#ff0:miss:STACK", "AREA:rejected#f00:rej:STACK", @@ -198,11 +227,7 @@ foreach my $siteinfo (sort { $a->[0] cmp $b->[0] } @news_graphs) { "AREA:deferred#ddd:defer:STACK", ] : [ - (map { "DEF:$_=$src:$_:AVERAGE" } - qw(accepted refused rejected duplicate)), - (map { ("DEF:bytes_$_=$src:${_}_size:AVERAGE", - "CDEF:kb_$_=bytes_$_,1024,/") - } qw(accepted duplicate)), + @defs, "AREA:accepted#00f:ok:STACK", "AREA:rejected#f00:rej:STACK", "AREA:duplicate#000:dupe:STACK",