notifies :restart, "service[rsyslog]"
end
+package "libfilesys-df-perl"
+
+template "/usr/local/bin/cleanup-tiles" do
+ source "cleanup-tiles.erb"
+ owner "root"
+ group "root"
+ mode 0644
+end
+
+tile_directories = node[:tile][:styles].collect do |name,style|
+ style[:tile_directories].collect { |directory| directory[:name] }
+end.flatten.sort.uniq
+
+template "/etc/cron.d/cleanup-tiles" do
+ source "cleanup-tiles.cron.erb"
+ owner "root"
+ group "root"
+ mode 0644
+ variables :directories => tile_directories
+end
+
munin_plugin "mod_tile_fresh"
munin_plugin "mod_tile_response"
munin_plugin "mod_tile_zoom"
--- /dev/null
+# DO NOT EDIT - This file is being maintained by Chef
+
+<% @directories.each do |directory| -%>
+0 1 * * * www-data ionice -c 3 /usr/local/bin/cleanup-tiles <%= directory %>
+<% end -%>
--- /dev/null
+#!/usr/bin/perl
+
+# DO NOT EDIT - This file is being maintained by Chef
+
+use strict;
+use warnings;
+
+use File::Temp qw(tmpnam);
+use Filesys::Df;
+
+my $tiledir = shift @ARGV;
+my $tempfile = tmpnam();
+
+if (df($tiledir)->{per} > 90)
+{
+ system("find", $tiledir, "-xdev", "-type", "f", "-name", "*.meta", "-atime", "+60", "-fprintf", $tempfile, "%A@ %p\n");
+
+ open(TILES, "-|", "sort", "-n", $tempfile) || die "Can't open $tempfile: $!";
+
+ while (df($tiledir)->{per} > 80)
+ {
+ for my $n (1..1000)
+ {
+ if (defined(my $line = readline(TILES)))
+ {
+ chomp $line;
+
+ my($time,$tile) = split(/ /, $line);
+
+ unlink($tile) || warn "Can't remove $tile: $!";
+ }
+ }
+ }
+
+ close(TILES);
+}
+
+unlink($tempfile);
+
+exit 0;