4 # Copyright (C) 2009, 2010, 2011, 2012 Google Inc.
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.
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.
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
25 # Overridden by unittest
26 : ${CHECK_CERT_EXPIRED:=$PKGLIBDIR/check-cert-expired}
29 echo "Usage: $0 node|master" 2>&1
33 if [[ "$#" -ne 1 ]]; then
39 readonly CLEANER_LOG_DIR=$LOG_DIR/cleaner
42 readonly CLEANER_LOG_DIR=$LOG_DIR/master-cleaner
45 echo "choices=node,master 1 1"
56 readonly CRYPTO_DIR=$RUN_DIR/crypto
57 readonly QUEUE_ARCHIVE_DIR=$DATA_DIR/queue/archive
60 [[ -e $DATA_DIR/ssconf_master_node ]]
64 # Return if directory for crypto keys doesn't exist
65 [[ -d $CRYPTO_DIR ]] || return 0
67 find $CRYPTO_DIR -mindepth 1 -maxdepth 1 -type d | \
69 if $CHECK_CERT_EXPIRED $dir/cert; then
70 rm -vf $dir/{cert,key}
71 rmdir -v --ignore-fail-on-non-empty $dir
77 # Return if machine is not part of a cluster
78 in_cluster || return 0
80 # Remove old watcher files
81 find $DATA_DIR -maxdepth 1 -type f -mtime +$REMOVE_AFTER \
82 \( -name 'watcher.*-*-*-*.data' -or \
83 -name 'watcher.*-*-*-*.instance-status' \) -print0 | \
88 # Return if machine is not part of a cluster
89 in_cluster || return 0
91 # Return if queue archive directory doesn't exist
92 [[ -d $QUEUE_ARCHIVE_DIR ]] || return 0
95 find $QUEUE_ARCHIVE_DIR -mindepth 2 -type f -mtime +$REMOVE_AFTER -print0 | \
99 # Define how many days archived jobs should be left alone
102 # Define how many log files to keep around (usually one per day)
105 # Log file for this run
106 LOG_FILE=$CLEANER_LOG_DIR/cleaner-$(date +'%Y-%m-%dT%H_%M').$$.log
108 # Create log directory
109 mkdir -p $CLEANER_LOG_DIR
111 # Redirect all output to log file
112 exec >>$LOG_FILE 2>&1
114 echo "Cleaner started at $(date)"
116 # Remove old cleaner log files
117 find $CLEANER_LOG_DIR -maxdepth 1 -type f | sort | head -n -$KEEP_LOGS | \