]> git.proxmox.com Git - pmg-api.git/blob - bin/pmg-daily
pmgsh: use new PMG::RESTEnvironment
[pmg-api.git] / bin / pmg-daily
1 #!/usr/bin/perl -T
2
3 $ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin';
4
5 delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
6
7 use strict;
8 use warnings;
9 use Time::Local;
10
11 use PVE::SafeSyslog;
12 use PVE::INotify;
13 use PVE::RESTEnvironment;
14
15 use PMG::Utils;
16 use PMG::Config;
17 use PMG::ClusterConfig;
18 use PMG::DBTools;
19
20 $SIG{'__WARN__'} = sub {
21 my $err = $@;
22 my $t = $_[0];
23 chomp $t;
24 print STDERR "$t\n";
25 syslog('warning', "%s", $t);
26 $@ = $err;
27 };
28
29 PVE::RESTEnvironment->setup_default_cli_env();
30
31 initlog('pmg-daily', 'mail');
32
33 my $cfg = PMG::Config->new();
34
35 sub get_timespan {
36
37 my ($sec, $min, $hour, $mday, $mon, $year) =
38 localtime(time());
39
40 my $end = timelocal(0, 0, 0, $mday, $mon, $year);
41 my $start = $end - 3600*24;
42
43 return ($start, $end);
44 }
45
46 my $statlifetime = $cfg->get('admin', 'statlifetime');
47
48 if ($statlifetime && $statlifetime > 0) {
49 my ($start, $end) = get_timespan();
50
51 $statlifetime -= 1;
52
53 my $secs = $statlifetime * 86400;
54
55 $start -= $secs;
56
57 # delete statistics older than $start
58
59 my $dbh;
60
61 my ($srows, $rrows) = (0, 0);
62
63 eval {
64 my $dbh = PMG::DBTools::open_ruledb();
65
66 $dbh->begin_work;
67
68 my $sth = $dbh->prepare("DELETE FROM CStatistic WHERE time < $start");
69 $sth->execute;
70 $srows = $sth->rows;
71 $sth->finish;
72
73 if ($srows > 0) {
74 $sth = $dbh->prepare(
75 "DELETE FROM CReceivers WHERE NOT EXISTS " .
76 "(SELECT * FROM CStatistic WHERE CID = CStatistic_CID AND RID = CStatistic_RID)");
77
78 $sth->execute;
79 $rrows = $sth->rows;
80 $sth->finish;
81 }
82
83 $dbh->commit;
84 };
85 if (my $err = $@) {
86 $dbh->rollback if $dbh;
87 syslog('err', PMG::Utils::msgquote($err));
88 } else {
89 syslog('info', "cleanup removed $srows entries from " .
90 "statistic database ($srows, $rrows)") if $srows;
91 }
92
93 $dbh->disconnect() if $dbh;
94 }
95
96
97 # fixme: check for available updates
98
99 # rotate razor log file
100 rename('/root/.razor/razor-agent.log', '/root/.razor/razor-agent.log.0');
101
102 # run bayes database maintainance
103 system('sa-learn --force-expire >/dev/null 2>&1');
104
105 exit (0);
106