contrib/collection3: Option to turn stacking off in GenericStacking
authorAnthony Dewhurst <dewhurst@gmail.com>
Sun, 2 Aug 2009 22:25:45 +0000 (23:25 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Mon, 31 Aug 2009 15:18:00 +0000 (17:18 +0200)
CDEFs are not stacked and AREAs are not added when "Stacking" is set to off.

Signed-off-by: Florian Forster <octo@leeloo.lan.home.verplant.org>
contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm
contrib/collection3/lib/Collectd/Graph/TypeLoader.pm

index 36c900a..8596ae9 100644 (file)
@@ -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'};
index a9e85f5..6971554 100644 (file)
@@ -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
 );