From 8f8cacc7c0d8e4eb82abb33d9a536a7382e435a6 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 24 Nov 2013 18:07:50 +0000 Subject: [PATCH] Improve idempotency of apache_module --- cookbooks/apache/providers/module.rb | 75 ++++++++++++++++------------ 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/cookbooks/apache/providers/module.rb b/cookbooks/apache/providers/module.rb index 29ef1621c..17008371e 100644 --- a/cookbooks/apache/providers/module.rb +++ b/cookbooks/apache/providers/module.rb @@ -22,12 +22,13 @@ def whyrun_supported? end action :install do - p = package package_name do - action :install - not_if { ::File.exists?(available_name("load")) } - end + if not installed? + package package_name - updated = p.updated_by_last_action? + updated = true + else + updated = false + end if new_resource.conf t = template available_name("conf") do @@ -46,44 +47,50 @@ action :install do end action :enable do - l = link enabled_name("load") do - to available_name("load") - owner "root" - group "root" - notifies :restart, "service[apache2]" - end + if not enabled? + link enabled_name("load") do + to available_name("load") + owner "root" + group "root" + notifies :restart, "service[apache2]" + end - c = link enabled_name("conf") do - to available_name("conf") - owner "root" - group "root" - notifies :reload, "service[apache2]" - only_if { ::File.exists?(available_name("conf")) } - end + link enabled_name("conf") do + to available_name("conf") + owner "root" + group "root" + notifies :reload, "service[apache2]" + only_if { ::File.exists?(available_name("conf")) } + end - new_resource.updated_by_last_action(l.updated_by_last_action? || c.updated_by_last_action?) + new_resource.updated_by_last_action(true) + end end action :disable do - l = link enabled_name("load") do - action :delete - notifies :restart, "service[apache2]" - end + if enabled? + link enabled_name("load") do + action :delete + notifies :restart, "service[apache2]" + end - c = link enabled_name("conf") do - action :delete - notifies :reload, "service[apache2]" - end + link enabled_name("conf") do + action :delete + notifies :reload, "service[apache2]" + end - new_resource.updated_by_last_action(l.updated_by_last_action? || c.updated_by_last_action?) + new_resource.updated_by_last_action(true) + end end action :delete do - p = package package_name do - action :remove - end + if installed? + package package_name do + action :remove + end - new_resource.updated_by_last_action(p.updated_by_last_action?) + new_resource.updated_by_last_action(true) + end end def package_name @@ -98,6 +105,10 @@ def enabled_name(extension) "/etc/apache2/mods-enabled/#{new_resource.name}.#{extension}" end +def installed? + ::File.exists?(available_name("load")) +end + def enabled? ::File.exists?(enabled_name("load")) end -- 2.43.2