contrib/collection3: Add the "IgnoreUnknown" config option.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 5 Mar 2009 08:35:28 +0000 (09:35 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 5 Mar 2009 08:36:45 +0000 (09:36 +0100)
Used by the "GenericStacked" graphs.

contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm
contrib/collection3/lib/Collectd/Graph/TypeLoader.pm

index a1a3e1c..ab95ee2 100644 (file)
@@ -49,6 +49,19 @@ sub getRRDArgs
   my $colors = $obj->{'rrd_colors'} || {};
   my @ret = ('-t', $rrd_title, @$rrd_opts);
 
+  my $ignore_unknown = $obj->{'ignore_unknown'} || 0;
+  if ($ignore_unknown)
+  {
+    if ($ignore_unknown =~ m/^(yes|true|on)$/i)
+    {
+      $ignore_unknown = 1;
+    }
+    else
+    {
+      $ignore_unknown = 0;
+    }
+  }
+
   if (defined $obj->{'rrd_vertical'})
   {
     push (@ret, '-v', $obj->{'rrd_vertical'});
@@ -59,6 +72,23 @@ sub getRRDArgs
     sort_idents_by_type_instance ($idents, $obj->{'custom_order'});
   }
 
+  if ($ignore_unknown)
+  {
+    my $new_idents = [];
+    for (@$idents)
+    {
+      if (exists ($obj->{'ds_names'}{$_->{'type_instance'}}))
+      {
+       push (@$new_idents, $_);
+      }
+    }
+
+    if (@$new_idents)
+    {
+      $idents = $new_idents;
+    }
+  }
+
   $obj->{'ds_names'} ||= {};
   my @names = map { $obj->{'ds_names'}{$_->{'type_instance'}} || $_->{'type_instance'} } (@$idents);
 
index c5fe613..2452b2a 100644 (file)
@@ -6,7 +6,7 @@ Collectd::Graph::TypeLoader - Load a module according to the "type"
 
 =cut
 
-# Copyright (C) 2008  Florian octo Forster <octo at verplant.org>
+# Copyright (C) 2008,2009  Florian octo Forster <octo at verplant.org>
 #
 # This program is free software; you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
@@ -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));
+our @ScalarMembers = (qw(rrd_title rrd_format rrd_vertical scale ignore_unknown));
 our @DSMappedMembers = (qw(ds_names rrd_colors));
 
 our %MemberToConfigMap =
@@ -47,7 +47,8 @@ our %MemberToConfigMap =
   rrd_vertical => 'rrdverticallabel',
   rrd_colors => 'color',
   scale => 'scale', # GenericIO only
-  custom_order => 'order' # GenericStacked only
+  custom_order => 'order', # GenericStacked only
+  ignore_unknown => 'ignoreunknown' # GenericStacked only
 );
 
 return (1);