#!/usr/bin/perl
use strict;
use warnings;

use EBox;
use EBox::Global;

use EBox::Logs::Consolidate;
use EBox::Util::Lock;
use Error qw(:try);

use constant LOCK_NAME => 'manageEBoxLogs';

EBox::init();
try {
    EBox::Util::Lock::lock(LOCK_NAME);
} catch EBox::Exceptions::Lock with {
    print "Already a manageEBoxLogs process running. Exiting\n";
    exit 0;
};

try {
    my $logs = EBox::Global->modInstance('logs');
    defined $logs or
        die 'Cannot instanstiate eBox logs module';

    unless (EBox::Config::boolean('disable_consolidation')) {
        # we consolidate before the purge to not lose any data
        EBox::Logs::Consolidate->consolidate('all');

        # do report consolidation
        my @mods =  @{ EBox::Global->modInstancesOfType('EBox::LogObserver')  };
        for my $mod (@mods) {
            $mod->consolidateReportFromLogs();
        }
    }

    $logs->archiveBackupSlices();

    $logs->purge();
} finally {
    EBox::Util::Lock::unlock(LOCK_NAME);
};

1;
