mirror of https://github.com/sipwise/collectd.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
3.0 KiB
145 lines
3.0 KiB
package Collectd::Graph::Config;
|
|
|
|
=head1 NAME
|
|
|
|
Collectd::Graph::Config - Parse the collection3 config file.
|
|
|
|
=cut
|
|
|
|
# Copyright (C) 2008 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
|
|
# Foundation; only version 2 of the License is applicable.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
# details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along with
|
|
# this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Carp (qw(cluck confess));
|
|
use Exporter ();
|
|
use Config::General ('ParseConfig');
|
|
use Collectd::Graph::Type ();
|
|
|
|
@Collectd::Graph::Config::ISA = ('Exporter');
|
|
@Collectd::Graph::Config::EXPORT_OK = (qw(gc_read_config gc_get_config
|
|
gc_get_scalar));
|
|
|
|
our $Configuration = undef;
|
|
|
|
return (1);
|
|
|
|
=head1 EXPORTED FUNCTIONS
|
|
|
|
=over 4
|
|
|
|
=item B<gc_read_config> (I<$file>)
|
|
|
|
Reads the configuration from the file located at I<$file>. Returns B<true> when
|
|
successfull and B<false> otherwise.
|
|
|
|
=cut
|
|
|
|
sub gc_read_config
|
|
{
|
|
my $file = shift;
|
|
my %conf;
|
|
|
|
if ($Configuration)
|
|
{
|
|
return (1);
|
|
}
|
|
|
|
$file ||= "etc/collection.conf";
|
|
|
|
%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);
|
|
} # gc_read_config
|
|
|
|
=item B<gc_get_config> ()
|
|
|
|
Returns the hash as provided by L<Config::General>. The hash is returned as a
|
|
hash reference. Don't change it!
|
|
|
|
=cut
|
|
|
|
sub gc_get_config
|
|
{
|
|
return ($Configuration);
|
|
} # gc_get_config
|
|
|
|
=item B<gc_get_config> (I<$key>, [I<$default>])
|
|
|
|
Returns the scalar value I<$key> from the config file. If the key does not
|
|
exist, I<$default> will be returned. If no default is given, B<undef> will be
|
|
used in this case.
|
|
|
|
=cut
|
|
|
|
sub gc_get_scalar
|
|
{
|
|
my $key = shift;
|
|
my $default = (@_ != 0) ? shift : undef;
|
|
my $value;
|
|
|
|
if (!$Configuration)
|
|
{
|
|
return ($default);
|
|
}
|
|
|
|
$value = $Configuration->{lc ($key)};
|
|
if (!defined ($value))
|
|
{
|
|
return ($default);
|
|
}
|
|
|
|
if (ref ($value) ne '')
|
|
{
|
|
cluck ("Value for `$key' should be scalar, but actually is "
|
|
. ref ($value));
|
|
return ($default);
|
|
}
|
|
|
|
return ($value);
|
|
} # gc_get_config
|
|
|
|
=back
|
|
|
|
=head1 DEPENDS ON
|
|
|
|
L<Config::General>
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<Collectd::Graph::Type>
|
|
|
|
=head1 AUTHOR AND LICENSE
|
|
|
|
Copyright (c) 2008 by Florian Forster
|
|
E<lt>octoE<nbsp>atE<nbsp>verplant.orgE<gt>. Licensed under the terms of the GNU
|
|
General Public License, VersionE<nbsp>2 (GPLv2).
|
|
|
|
=cut
|
|
|
|
# vim: set shiftwidth=2 softtabstop=2 tabstop=8 et fdm=marker :
|