From: Anthony Dewhurst Date: Sun, 2 Aug 2009 22:25:45 +0000 (+0100) Subject: contrib/collection3: Option to turn stacking off in GenericStacking X-Git-Tag: collectd-4.6.5~11 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=03f24261247baff4ecf72373f6173ae82395f199;p=collectd.git contrib/collection3: Option to turn stacking off in GenericStacking CDEFs are not stacked and AREAs are not added when "Stacking" is set to off. Signed-off-by: Florian Forster --- diff --git a/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm b/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm index 36c900a2..8596ae9d 100644 --- a/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm +++ b/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm @@ -77,6 +77,19 @@ sub getRRDArgs } } + my $stacking = $obj->{'stacking'}; + if ($stacking) + { + if ($stacking =~ m/^(no|false|off|none)$/i) + { + $stacking = 0; + } + else + { + $stacking = 1; + } + } + if (defined $obj->{'rrd_vertical'}) { push (@ret, '-v', $obj->{'rrd_vertical'}); @@ -116,7 +129,7 @@ sub getRRDArgs { $ds_name_len = length ($names[$i]); } - + # Escape colons _after_ the length has been checked. $names[$i] =~ s/:/\\:/g; @@ -126,36 +139,47 @@ sub getRRDArgs "DEF:max${i}=${filename}:${data_source}:MAX"); } - for (my $i = @$idents - 1; $i >= 0; $i--) - { - if ($i == (@$idents - 1)) + if ($stacking) { + for (my $i = @$idents - 1; $i >= 0; $i--) { - push (@ret, - "CDEF:cdef${i}=avg${i},UN,0,avg${i},IF"); + if ($i == (@$idents - 1)) + { + push (@ret, + "CDEF:cdef${i}=avg${i},UN,0,avg${i},IF"); + } + else + { + my $j = $i + 1; + push (@ret, + "CDEF:cdef${i}=avg${i},UN,0,avg${i},IF,cdef${j},+"); + } } - else + + for (my $i = 0; $i < @$idents; $i++) { - my $j = $i + 1; + my $type_instance = $idents->[$i]{'type_instance'}; + my $color = '000000'; + if (exists $colors->{$type_instance}) + { + $color = $colors->{$type_instance}; + } + + $color = get_faded_color ($color); + push (@ret, - "CDEF:cdef${i}=avg${i},UN,0,avg${i},IF,cdef${j},+"); + "AREA:cdef${i}#${color}"); } } - - for (my $i = 0; $i < @$idents; $i++) + else { - my $type_instance = $idents->[$i]{'type_instance'}; - my $color = '000000'; - if (exists $colors->{$type_instance}) + for (my $i = @$idents - 1; $i >= 0; $i--) { - $color = $colors->{$type_instance}; + push (@ret, + "CDEF:cdef${i}=avg${i}"); } - - $color = get_faded_color ($color); - - push (@ret, - "AREA:cdef${i}#${color}"); } + for (my $i = 0; $i < @$idents; $i++) { my $type_instance = $idents->[$i]{'type_instance'}; diff --git a/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm b/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm index a9e85f57..69715547 100644 --- a/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm +++ b/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm @@ -34,7 +34,7 @@ use Collectd::Graph::Type (); @Collectd::Graph::TypeLoader::EXPORT_OK = ('tl_load_type'); our @ArrayMembers = (qw(data_sources rrd_opts custom_order)); -our @ScalarMembers = (qw(rrd_title rrd_format rrd_vertical scale ignore_unknown)); +our @ScalarMembers = (qw(rrd_title rrd_format rrd_vertical scale ignore_unknown stacking)); our @DSMappedMembers = (qw(ds_names rrd_colors)); our %MemberToConfigMap = @@ -48,6 +48,7 @@ our %MemberToConfigMap = rrd_colors => 'color', scale => 'scale', # GenericIO only custom_order => 'order', # GenericStacked only + stacking => 'stacking', # GenericStacked only ignore_unknown => 'ignoreunknown' # GenericStacked only );