use reusable I/O utils, more solid error handling for DiskUsage probe
[scpubgit/System-Introspector.git] / lib / System / Introspector / Puppet.pm
CommitLineData
660adc3a 1package System::Introspector::Puppet;
2use Moo;
3
4has classes_file => (
5 is => 'ro',
6 default => sub { '/var/lib/puppet/state/classes.txt' },
7);
8
9has resources_file => (
10 is => 'ro',
11 default => sub { '/var/lib/puppet/state/resources.txt' },
12);
13
14sub gather {
15 my ($self) = @_;
16 return {
17 classes => $self->_gather_classes,
18 resources => $self->_gather_resources,
19 };
20}
21
22sub _gather_resources {
23 my ($self) = @_;
24 my $file = $self->resources_file;
25 open my $fh, '<', $file
26 or return { error => "Unable to read $file: $!" };
27 my @lines = <$fh>;
28 chomp @lines;
29 return [ map {
30 m{^(\w+)\[(.*)\]$}
31 ? [$1, $2]
32 : [error => $_];
33 } @lines ];
34}
35
36sub _gather_classes {
37 my ($self) = @_;
38 my $file = $self->classes_file;
39 open my $fh, '<', $file
40 or return { error => "Unable to read $file: $!" };
41 my @lines = <$fh>;
42 chomp @lines;
43 return \@lines;
44}
45
461;
b5368de3 47
48__END__
49
50=head1 NAME
51
52System::Introspector::Puppet - Gather puppet agent information
53
54=head1 DESCRIPTION
55
56Reads the C<classes.txt> and C<resources.txt> provided by puppet.
57
58=head1 ATTRIBUTES
59
60=head2 classes_file
61
62The path to the C<classes.txt> puppet file.
63Defaults to C</var/lib/puppet/state/classes.txt>.
64
65=head2 resources_file
66
67The path to the C<resources.txt> puppet file.
68Defaults to C</var/lib/puppet/state/resources.txt>.
69
70=head1 SEE ALSO
71
72=over
73
74=item L<System::Introspector>
75
76=back
77
78=cut