Statistics
| Branch: | Tag: | Revision:

root / daemons / ganeti-cleaner.in @ 8e2ed2e8

History | View | Annotate | Download (2.6 kB)

1 fc3fd894 Michael Hanselmann
#!/bin/bash
2 fc3fd894 Michael Hanselmann
#
3 fc3fd894 Michael Hanselmann
4 7b642c49 Michael Hanselmann
# Copyright (C) 2009, 2010, 2011 Google Inc.
5 fc3fd894 Michael Hanselmann
#
6 fc3fd894 Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
7 fc3fd894 Michael Hanselmann
# it under the terms of the GNU General Public License as published by
8 fc3fd894 Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
9 fc3fd894 Michael Hanselmann
# (at your option) any later version.
10 fc3fd894 Michael Hanselmann
#
11 fc3fd894 Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
12 fc3fd894 Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 fc3fd894 Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 fc3fd894 Michael Hanselmann
# General Public License for more details.
15 fc3fd894 Michael Hanselmann
#
16 fc3fd894 Michael Hanselmann
# You should have received a copy of the GNU General Public License
17 fc3fd894 Michael Hanselmann
# along with this program; if not, write to the Free Software
18 fc3fd894 Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 fc3fd894 Michael Hanselmann
# 02110-1301, USA.
20 fc3fd894 Michael Hanselmann
21 fc3fd894 Michael Hanselmann
set -e
22 fc3fd894 Michael Hanselmann
23 7b642c49 Michael Hanselmann
in_cluster() {
24 7b642c49 Michael Hanselmann
  [[ -e $DATA_DIR/ssconf_master_node ]]
25 7b642c49 Michael Hanselmann
}
26 7b642c49 Michael Hanselmann
27 f6781abf Michael Hanselmann
cleanup_master() {
28 f6781abf Michael Hanselmann
  # Return if machine is not part of a cluster
29 7b642c49 Michael Hanselmann
  in_cluster || return 0
30 f6781abf Michael Hanselmann
31 f6781abf Michael Hanselmann
  # Return if queue archive directory doesn't exist
32 f6781abf Michael Hanselmann
  [[ -d $QUEUE_ARCHIVE_DIR ]] || return 0
33 f6781abf Michael Hanselmann
34 f6781abf Michael Hanselmann
  # Remove old jobs
35 f6781abf Michael Hanselmann
  find $QUEUE_ARCHIVE_DIR -mindepth 2 -type f -mtime +$REMOVE_AFTER -print0 | \
36 f6781abf Michael Hanselmann
  xargs -r0 rm -vf
37 f6781abf Michael Hanselmann
}
38 f6781abf Michael Hanselmann
39 c6ccba7e Michael Hanselmann
cleanup_node() {
40 c6ccba7e Michael Hanselmann
  # Return if directory for crypto keys doesn't exist
41 c6ccba7e Michael Hanselmann
  [[ -d $CRYPTO_DIR ]] || return 0
42 c6ccba7e Michael Hanselmann
43 c6ccba7e Michael Hanselmann
  find $CRYPTO_DIR -mindepth 1 -maxdepth 1 -type d | \
44 c6ccba7e Michael Hanselmann
  while read dir; do
45 c6ccba7e Michael Hanselmann
    if $CHECK_CERT_EXPIRED $dir/cert; then
46 c6ccba7e Michael Hanselmann
      rm -vf $dir/{cert,key}
47 c6ccba7e Michael Hanselmann
      rmdir -v --ignore-fail-on-non-empty $dir
48 c6ccba7e Michael Hanselmann
    fi
49 c6ccba7e Michael Hanselmann
  done
50 c6ccba7e Michael Hanselmann
}
51 c6ccba7e Michael Hanselmann
52 7b642c49 Michael Hanselmann
cleanup_watcher() {
53 7b642c49 Michael Hanselmann
  # Return if machine is not part of a cluster
54 7b642c49 Michael Hanselmann
  in_cluster || return 0
55 7b642c49 Michael Hanselmann
56 7b642c49 Michael Hanselmann
  # Remove old watcher files
57 7b642c49 Michael Hanselmann
  find $DATA_DIR -maxdepth 1 -type f -mtime +$REMOVE_AFTER \
58 6890cf2e Michael Hanselmann
    \( -name 'watcher.*-*-*-*.data' -or \
59 6890cf2e Michael Hanselmann
       -name 'watcher.*-*-*-*.instance-status' \) -print0 | \
60 7b642c49 Michael Hanselmann
  xargs -r0 rm -vf
61 7b642c49 Michael Hanselmann
}
62 7b642c49 Michael Hanselmann
63 7172f605 Michael Hanselmann
# Overridden by unittest
64 7172f605 Michael Hanselmann
: ${LOCALSTATEDIR:=@LOCALSTATEDIR@}
65 7172f605 Michael Hanselmann
: ${CHECK_CERT_EXPIRED:=@PKGLIBDIR@/check-cert-expired}
66 7172f605 Michael Hanselmann
67 7172f605 Michael Hanselmann
DATA_DIR=$LOCALSTATEDIR/lib/ganeti
68 7172f605 Michael Hanselmann
CLEANER_LOG_DIR=$LOCALSTATEDIR/log/ganeti/cleaner
69 fc3fd894 Michael Hanselmann
QUEUE_ARCHIVE_DIR=$DATA_DIR/queue/archive
70 7172f605 Michael Hanselmann
CRYPTO_DIR=$LOCALSTATEDIR/run/ganeti/crypto
71 fc3fd894 Michael Hanselmann
72 fc3fd894 Michael Hanselmann
# Define how many days archived jobs should be left alone
73 fc3fd894 Michael Hanselmann
REMOVE_AFTER=21
74 fc3fd894 Michael Hanselmann
75 f6781abf Michael Hanselmann
# Define how many log files to keep around (usually one per day)
76 f6781abf Michael Hanselmann
KEEP_LOGS=50
77 f6781abf Michael Hanselmann
78 f6781abf Michael Hanselmann
# Log file for this run
79 f6781abf Michael Hanselmann
LOG_FILE=$CLEANER_LOG_DIR/cleaner-$(date +'%Y-%m-%dT%H_%M').$$.log
80 f6781abf Michael Hanselmann
81 f6781abf Michael Hanselmann
# Create log directory
82 f6781abf Michael Hanselmann
mkdir -p $CLEANER_LOG_DIR
83 f6781abf Michael Hanselmann
84 f6781abf Michael Hanselmann
# Redirect all output to log file
85 f6781abf Michael Hanselmann
exec >>$LOG_FILE 2>&1
86 f6781abf Michael Hanselmann
87 f6781abf Michael Hanselmann
echo "Cleaner started at $(date)"
88 fc3fd894 Michael Hanselmann
89 f6781abf Michael Hanselmann
# Remove old cleaner log files
90 f6781abf Michael Hanselmann
find $CLEANER_LOG_DIR -maxdepth 1 -type f | sort | head -n -$KEEP_LOGS | \
91 f6781abf Michael Hanselmann
xargs -r rm -vf
92 fc3fd894 Michael Hanselmann
93 f6781abf Michael Hanselmann
cleanup_master
94 c6ccba7e Michael Hanselmann
cleanup_node
95 7b642c49 Michael Hanselmann
cleanup_watcher
96 fc3fd894 Michael Hanselmann
97 fc3fd894 Michael Hanselmann
exit 0