/usr/share/fusioninventory/lib/FusionInventory/Agent/Task.pm is in fusioninventory-agent 1:2.3.10.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | package FusionInventory::Agent::Task;
use strict;
use warnings;
use English qw(-no_match_vars);
use File::Find;
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Logger;
sub new {
my ($class, %params) = @_;
die 'no target parameter' unless $params{target};
my $self = {
logger => $params{logger} ||
FusionInventory::Agent::Logger->new(),
config => $params{config},
confdir => $params{confdir},
datadir => $params{datadir},
target => $params{target},
deviceid => $params{deviceid},
};
bless $self, $class;
return $self;
}
sub getOptionsFromServer {
my ($self, $response, $name, $feature) = @_;
if (!$response) {
$self->{logger}->debug("No server response");
return;
}
my $options = $response->getOptionsInfoByName($name);
if (!$options) {
$self->{logger}->debug("No $feature requested in the prolog");
return;
}
return $options;
}
sub getModules {
my ($class, $prefix) = @_;
# allow to be called as an instance method
$class = ref $class ? ref $class : $class;
# use %INC to retrieve the root directory for this task
my $file = module2file($class);
my $rootdir = $INC{$file};
$rootdir =~ s/.pm$//;
return unless -d $rootdir;
# find a list of modules from files in this directory
my $root = $file;
$root =~ s/.pm$//;
$root .= "/$prefix" if $prefix;
my @modules;
my $wanted = sub {
return unless -f $_;
return unless $File::Find::name =~ m{($root/\S+\.pm)$};
my $module = file2module($1);
push(@modules, $module);
};
File::Find::find($wanted, $rootdir);
return @modules
}
1;
__END__
=head1 NAME
FusionInventory::Agent::Task - Base class for agent task
=head1 DESCRIPTION
This is an abstract class for all task performed by the agent.
=head1 METHODS
=head2 new(%params)
The constructor. The following parameters are allowed, as keys of the %params
hash:
=over
=item I<logger>
the logger object to use (default: a new stderr logger)
=item I<config>
=item I<target>
=item I<storage>
=item I<prologresp>
=item I<client>
=item I<deviceid>
=back
=head2 isEnabled()
This is a method to be implemented by each subclass.
=head2 run()
This is a method to be implemented by each subclass.
=head2 getOptionsFromServer($response, $name, $feature)
Get task-specific options in server response to prolog message.
=head2 getModules($prefix)
Return a list of modules for this task. All modules installed at the same
location than this package, belonging to __PACKAGE__ namespace, will be
returned. If optional $prefix is given, base search namespace will be
__PACKAGE__/$prefix instead.
|