ganeti-cleaner: Write log file with removed files
[ganeti-local] / daemons / ganeti-cleaner.in
1 #!/bin/bash
2 #
3
4 # Copyright (C) 2009 Google Inc.
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 # 02110-1301, USA.
20
21 set -e
22
23 cleanup_master() {
24   # Return if machine is not part of a cluster
25   [[ -e $DATA_DIR/ssconf_master_node ]] || return 0
26
27   # Return if queue archive directory doesn't exist
28   [[ -d $QUEUE_ARCHIVE_DIR ]] || return 0
29
30   # Remove old jobs
31   find $QUEUE_ARCHIVE_DIR -mindepth 2 -type f -mtime +$REMOVE_AFTER -print0 | \
32   xargs -r0 rm -vf
33 }
34
35 DATA_DIR=@LOCALSTATEDIR@/lib/ganeti
36 CLEANER_LOG_DIR=@LOCALSTATEDIR@/log/ganeti/cleaner
37 QUEUE_ARCHIVE_DIR=$DATA_DIR/queue/archive
38
39 # Define how many days archived jobs should be left alone
40 REMOVE_AFTER=21
41
42 # Define how many log files to keep around (usually one per day)
43 KEEP_LOGS=50
44
45 # Log file for this run
46 LOG_FILE=$CLEANER_LOG_DIR/cleaner-$(date +'%Y-%m-%dT%H_%M').$$.log
47
48 # Create log directory
49 mkdir -p $CLEANER_LOG_DIR
50
51 # Redirect all output to log file
52 exec >>$LOG_FILE 2>&1
53
54 echo "Cleaner started at $(date)"
55
56 # Remove old cleaner log files
57 find $CLEANER_LOG_DIR -maxdepth 1 -type f | sort | head -n -$KEEP_LOGS | \
58 xargs -r rm -vf
59
60 cleanup_master
61
62 exit 0