From 5de691f51fd7a4d0875e441e756b035e3293c036 Mon Sep 17 00:00:00 2001 From: Will Hopper Date: Wed, 27 Jun 2012 17:31:48 -0700 Subject: [PATCH] (#11849) Add rake task to install cron job to clean up database reports This commit adds a rake task to install a monthly cron job to clean up old database reports, as suggested in official Puppet Labs documentation. This allows users to easily install the optional cron job while not risking undesired data loss for those who do not wish to have the job installed by default. --- examples/puppet-dashboard.cleanup_reports.cron | 17 +++++++++++++++++ ext/packaging/debian/rules | 1 + ext/packaging/redhat/puppet-dashboard.spec.erb | 4 +++- lib/tasks/install_cleanup_cron.rake | 16 ++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100755 examples/puppet-dashboard.cleanup_reports.cron create mode 100644 lib/tasks/install_cleanup_cron.rake diff --git a/examples/puppet-dashboard.cleanup_reports.cron b/examples/puppet-dashboard.cleanup_reports.cron new file mode 100755 index 000000000..3d885a9b8 --- /dev/null +++ b/examples/puppet-dashboard.cleanup_reports.cron @@ -0,0 +1,17 @@ +#!/bin/bash + +# Example script to clean up after Dashboard by pruning old reports. +# Options for the rake task specifying time requirements for report +# deletion can be modified in this script. As specified below, this task will +# delete reports older than one month. To view options for the task, +# run `rake reports:prune` in the directory containing puppet-dashboard's +# code. + +set -u + +PUPPET_DB_PATH=/usr/share/puppet-dashboard + +output=`rake -s -f ${PUPPET_DB_PATH}/Rakefile RAILS_ENV=production reports:prune upto=1 unit=mon 2>&1 1> /dev/null` +if [ $? -ne 0 ]; then + logger -i "${output}" +fi diff --git a/ext/packaging/debian/rules b/ext/packaging/debian/rules index 77db794e5..48bef134a 100755 --- a/ext/packaging/debian/rules +++ b/ext/packaging/debian/rules @@ -20,6 +20,7 @@ binary-install/puppet-dashboard:: Rakefile \ script \ spec \ + examples \ vendor \ VERSION \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/puppet-dashboard diff --git a/ext/packaging/redhat/puppet-dashboard.spec.erb b/ext/packaging/redhat/puppet-dashboard.spec.erb index 9f98ec49b..1fbae6b87 100644 --- a/ext/packaging/redhat/puppet-dashboard.spec.erb +++ b/ext/packaging/redhat/puppet-dashboard.spec.erb @@ -51,7 +51,8 @@ install -p -d -m0755 $RPM_BUILD_ROOT/%{_datadir}/%{name}/vendor install -p -d -m0755 $RPM_BUILD_ROOT/%{_datadir}/%{name}/certs install -p -d -m0755 $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name}-%{version} install -p -d -m0755 $RPM_BUILD_ROOT/%{_datadir}/%{name}/spool -cp -p -r app bin config db ext lib public Rakefile script spec vendor $RPM_BUILD_ROOT/%{_datadir}/%{name} +install -p -d -m0755 $RPM_BUILD_ROOT/%{_datadir}/%{name}/examples +cp -p -r app bin config db ext lib public Rakefile script spec examples vendor $RPM_BUILD_ROOT/%{_datadir}/%{name} install -Dp -m0640 config/database.yml.example $RPM_BUILD_ROOT/%{_datadir}/%{name}/config/database.yml install -Dp -m0640 config/settings.yml.example $RPM_BUILD_ROOT/%{_datadir}/%{name}/config/settings.yml install -Dp -m0644 VERSION $RPM_BUILD_ROOT/%{_datadir}/%{name}/VERSION @@ -131,6 +132,7 @@ fi %attr(-,puppet-dashboard,puppet-dashboard) %dir %{_datadir}/%{name}/tmp %attr(-,puppet-dashboard,puppet-dashboard) %{_datadir}/%{name}/vendor %attr(-,puppet-dashboard,puppet-dashboard) %{_datadir}/%{name}/certs +%attr(-,puppet-dashboard,puppet-dashboard) %{_datadir}/%{name}/examples #%attr(-,puppet-dashboard,puppet-dashboard) %dir /var/log/%{name} %changelog diff --git a/lib/tasks/install_cleanup_cron.rake b/lib/tasks/install_cleanup_cron.rake new file mode 100644 index 000000000..600fdda77 --- /dev/null +++ b/lib/tasks/install_cleanup_cron.rake @@ -0,0 +1,16 @@ +require 'fileutils' +namespace :cron do + desc 'Install monthly cron job to automatically prune old reports from the databases.' + task :cleanup do + cron_path = '/etc/cron.monthly' + dashboard_path = '/usr/share/puppet-dashboard/examples' + cron_script = 'puppet-dashboard.cleanup_reports.cron' + + begin + ln_sf("#{dashboard_path}/#{cron_script}", "#{cron_path}/#{cron_script}") + rescue + puts "\n\nError: Could not create symlink #{cron_path}/#{cron_script}\n" + puts "Are you root?\n" + end + end +end