package System::Introspector::Puppet;
use Moo;
+use System::Introspector::Util qw(
+ output_from_file
+ transform_exceptions
+);
+
has classes_file => (
is => 'ro',
default => sub { '/var/lib/puppet/state/classes.txt' },
sub _gather_resources {
my ($self) = @_;
- my $file = $self->resources_file;
- open my $fh, '<', $file
- or return { error => "Unable to read $file: $!" };
- my @lines = <$fh>;
- chomp @lines;
- return [ map {
- m{^(\w+)\[(.*)\]$}
- ? [$1, $2]
- : [error => $_];
- } @lines ];
+ return transform_exceptions {
+ my @lines = output_from_file $self->resources_file;
+ chomp @lines;
+ return { list => [ map {
+ m{^(\w+)\[(.*)\]$}
+ ? [$1, $2]
+ : [error => $_];
+ } @lines ] };
+ };
}
sub _gather_classes {
my ($self) = @_;
- my $file = $self->classes_file;
- open my $fh, '<', $file
- or return { error => "Unable to read $file: $!" };
- my @lines = <$fh>;
- chomp @lines;
- return \@lines;
+ return transform_exceptions {
+ my @lines = output_from_file $self->classes_file;
+ chomp @lines;
+ return { list => \@lines };
+ };
}
1;
+
+__END__
+
+=head1 NAME
+
+System::Introspector::Puppet - Gather puppet agent information
+
+=head1 DESCRIPTION
+
+Reads the C<classes.txt> and C<resources.txt> provided by puppet.
+
+=head1 ATTRIBUTES
+
+=head2 classes_file
+
+The path to the C<classes.txt> puppet file.
+Defaults to C</var/lib/puppet/state/classes.txt>.
+
+=head2 resources_file
+
+The path to the C<resources.txt> puppet file.
+Defaults to C</var/lib/puppet/state/resources.txt>.
+
+=head1 SEE ALSO
+
+=over
+
+=item L<System::Introspector>
+
+=back
+
+=cut