Armadito-Agent

 view release on metacpan or  search on metacpan

lib/Armadito/Agent/Scheduler/Cron.pm  view on Meta::CPAN

sub trimSpaces {
	my ($match) = @_;

	$match =~ s/\s+$//ms;
	$match =~ s/^\s+//ms;

	return $match;
}

sub _getDefaultConf {
	my ($self) = @_;

	return {
		'user'    => undef,
		'Logfile' => undef
	};
}

sub _getConfPath {
	my ($self) = @_;

	return $self->{agent}->{confdir} . "/scheduler-" . lc( $self->{scheduler}->{name} ) . ".cfg";
}

sub _updateCronTab {
	my ($self) = @_;

	my $cron_path = "/etc/cron.d/armadito-agent";
	my $content   = "#\n# Cron configuration for armadito-agent\n#\n";

	$content .= "# last modification by armadito-agent : " . nowToISO8601('Local') . "\n\n";
	$content .= "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\n\n";

	foreach ( @{ $self->{config}->{tasks} } ) {
		$content .= $self->_addCronTask($_);
	}

	writeFile(
		content  => $content,
		mode     => '>',
		filepath => $cron_path
	);
}

sub _addCronTask {
	my ( $self, $task ) = @_;

	return
		  $task->{freq} . "\t"
		. $self->{config}->{user}[0] . "\t"
		. abs_path($0)
		. " -t \""
		. $task->{name} . "\" "
		. $task->{args} . " " . ">>"
		. $self->{config}->{logfile}[0] . ' 2>&1' . "\n";
}

sub run {
	my ( $self, %params ) = @_;

	$self = $self->SUPER::run(%params);
	$self->_loadConf();
	$self->_updateCronTab();

	return $self;
}

1;

__END__

=head1 NAME

Armadito::Agent::Scheduler::Cron - base class used for task scheduling management

=head1 DESCRIPTION

This task inherits from L<Armadito::Agent::Task::Scheduler>. It allows remote management of agent's crontab configuration.

=head1 FUNCTIONS

=head2 run ( $self, %params )

Run the task.



( run in 3.419 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )