From 09e5083a36632d53e388446d0517a5c2bccd2b24 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 24 Nov 2013 17:35:34 +0000 Subject: [PATCH] Convert apache_module to an LWRP --- cookbooks/apache/definitions/apache_module.rb | 70 ------------ cookbooks/apache/providers/module.rb | 103 ++++++++++++++++++ cookbooks/apache/resources/module.rb | 26 +++++ 3 files changed, 129 insertions(+), 70 deletions(-) delete mode 100644 cookbooks/apache/definitions/apache_module.rb create mode 100644 cookbooks/apache/providers/module.rb create mode 100644 cookbooks/apache/resources/module.rb diff --git a/cookbooks/apache/definitions/apache_module.rb b/cookbooks/apache/definitions/apache_module.rb deleted file mode 100644 index beb43b2ef..000000000 --- a/cookbooks/apache/definitions/apache_module.rb +++ /dev/null @@ -1,70 +0,0 @@ -# -# Cookbook Name:: apache -# Definition:: apache_module -# -# Copyright 2010, OpenStreetMap Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -define :apache_module, :action => [ :install, :enable ], :variables => {} do - name = params[:name] - module_action = params[:action] - - if params[:package].nil? or params[:package].empty? - package_name = "libapache2-mod-#{name}" - else - package_name = params[:package] - end - - if module_action.include?(:install) - package package_name do - action :install - not_if { File.exists?("/etc/apache2/mods-available/#{name}.load") } - end - - if params[:conf] - template "/etc/apache2/mods-available/#{name}.conf" do - source params[:conf] - owner "root" - group "root" - mode 0644 - variables params[:variables] - if File.exists?("/etc/apache2/mods-enabled/#{name}.load") - notifies :reload, "service[apache2]" - end - end - end - end - - if module_action.include?(:enable) - execute "a2enmod-#{name}" do - command "/usr/sbin/a2enmod #{name}" - notifies :restart, "service[apache2]" - not_if { File.exists?("/etc/apache2/mods-enabled/#{name}.load") } - end - elsif module_action.include?(:disable) or module_action.include?(:remove) - execute "a2dismod-#{name}" do - command "/usr/sbin/a2dismod #{name}" - notifies :restart, "service[apache2]" - only_if { File.exists?("/etc/apache2/mods-enabled/#{name}.load") } - end - end - - if module_action.include?(:remove) - package package_name do - action :remove - only_if { File.exists?("/etc/apache2/mods-available/#{name}.load") } - end - end -end diff --git a/cookbooks/apache/providers/module.rb b/cookbooks/apache/providers/module.rb new file mode 100644 index 000000000..29ef1621c --- /dev/null +++ b/cookbooks/apache/providers/module.rb @@ -0,0 +1,103 @@ +# +# Cookbook Name:: apache +# Provider:: apache_module +# +# Copyright 2013, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +def whyrun_supported? + true +end + +action :install do + p = package package_name do + action :install + not_if { ::File.exists?(available_name("load")) } + end + + updated = p.updated_by_last_action? + + if new_resource.conf + t = template available_name("conf") do + source new_resource.conf + owner "root" + group "root" + mode 0644 + variables new_resource.variables + notifies :reload, "service[apache2]" if enabled? + end + + updated = updated || t.updated_by_last_action? + end + + new_resource.updated_by_last_action(updated) +end + +action :enable do + l = 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 + + new_resource.updated_by_last_action(l.updated_by_last_action? || c.updated_by_last_action?) +end + +action :disable do + l = 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 + + new_resource.updated_by_last_action(l.updated_by_last_action? || c.updated_by_last_action?) +end + +action :delete do + p = package package_name do + action :remove + end + + new_resource.updated_by_last_action(p.updated_by_last_action?) +end + +def package_name + new_resource.package || "libapache2-mod-#{new_resource.name}" +end + +def available_name(extension) + "/etc/apache2/mods-available/#{new_resource.name}.#{extension}" +end + +def enabled_name(extension) + "/etc/apache2/mods-enabled/#{new_resource.name}.#{extension}" +end + +def enabled? + ::File.exists?(enabled_name("load")) +end diff --git a/cookbooks/apache/resources/module.rb b/cookbooks/apache/resources/module.rb new file mode 100644 index 000000000..f2d95551e --- /dev/null +++ b/cookbooks/apache/resources/module.rb @@ -0,0 +1,26 @@ +# +# Cookbook Name:: apache +# Resource:: apache_module +# +# Copyright 2013, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +actions :install, :enable, :disable, :remove +default_action [:install, :enable] + +attribute :name, :kind_of => String, :name_attribute => true +attribute :package, :kind_of => String +attribute :conf, :kind_of => String +attribute :variables, :kind_of => Hash, :default => {} -- 2.39.5