X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=contrib%2Fcollection3%2Flib%2FCollectd%2FGraph%2FTypeLoader.pm;h=5a0b522b424270bd9f819023700a048762eece5e;hb=3427c2e266c04d67848bda913caa730a395c7295;hp=6223eaa0cf663407cd1139d4dfefb1137524455a;hpb=d767db104769bed7fefea61538bdacb364434e9a;p=collectd.git diff --git a/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm b/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm index 6223eaa0..5a0b522b 100644 --- a/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm +++ b/contrib/collection3/lib/Collectd/Graph/TypeLoader.pm @@ -6,7 +6,7 @@ Collectd::Graph::TypeLoader - Load a module according to the "type" =cut -# Copyright (C) 2008 Florian octo Forster +# Copyright (C) 2008,2009 Florian octo Forster # # 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 @@ -27,15 +27,14 @@ use warnings; use Carp (qw(cluck confess)); use Exporter (); use Config::General ('ParseConfig'); +use Collectd::Graph::Config ('gc_get_config'); use Collectd::Graph::Type (); @Collectd::Graph::TypeLoader::ISA = ('Exporter'); -@Collectd::Graph::TypeLoader::EXPORT_OK = ('tl_read_config', 'tl_load_type'); - -our $Configuration = undef; +@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 stacking)); our @DSMappedMembers = (qw(ds_names rrd_colors)); our %MemberToConfigMap = @@ -48,54 +47,21 @@ our %MemberToConfigMap = rrd_vertical => 'rrdverticallabel', rrd_colors => 'color', scale => 'scale', # GenericIO only - custom_order => 'order' # GenericStacked only + custom_order => 'order', # GenericStacked only + stacking => 'stacking', # GenericStacked only + ignore_unknown => 'ignoreunknown' # GenericStacked only ); return (1); -=head1 EXPORTED FUNCTIONS - -=over 4 - -=item B (I<$file>) - -Reads the configuration from the file located at I<$file>. - -=cut - -sub tl_read_config -{ - my $file = shift; - my %conf; - - if ($Configuration) - { - return (1); - } - - %conf = ParseConfig (-ConfigFile => $file, - -LowerCaseNames => 1, - -UseApacheInclude => 1, - -IncludeDirectories => 1, - ($Config::General::VERSION >= 2.38) ? (-IncludeAgain => 0) : (), - -MergeDuplicateBlocks => 1, - -CComments => 0); - if (!%conf) - { - return; - } - - $Configuration = \%conf; - return (1); -} # tl_read_config - sub _create_object { my $module = shift; my $obj; - local $SIG{__WARN__} = sub {}; - local $SIG{__DIE__} = sub {}; + # Surpress warnings and error messages caused by the eval. + local $SIG{__WARN__} = sub { return (1); print STDERR "WARNING: " . join (', ', @_) . "\n"; }; + local $SIG{__DIE__} = sub { return (1); print STDERR "FATAL: " . join (', ', @_) . "\n"; }; eval <{$member} ||= {}; $obj->{$member}{$ds} = $val; - - print STDERR "\$obj->{$member}{$ds} = $val;\n"; } # for (@val_list) } # }}} for (@DSMappedMembers) @@ -263,6 +227,10 @@ sub _load_module_generic return ($obj); } # _load_module_generic +=head1 EXPORTED FUNCTIONS + +=over 4 + =item B (I<$type>) Does whatever is necessary to get an object with which to graph RRD files of @@ -273,10 +241,11 @@ type I<$type>. sub tl_load_type { my $type = shift; + my $conf = gc_get_config (); - if (defined $Configuration->{'type'}{$type}) + if (defined ($conf) && defined ($conf->{'type'}{$type})) { - return (_load_module_from_config ($Configuration->{'type'}{$type})); + return (_load_module_from_config ($conf->{'type'}{$type})); } else {