From 7ae16f9ab1f5c111c81335bdfb143f267f4e2d28 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 23 Nov 2013 17:47:08 +0000 Subject: [PATCH 1/1] Convert apache_site to an LWRP --- cookbooks/apache/definitions/apache_site.rb | 60 --------------- cookbooks/apache/providers/site.rb | 83 +++++++++++++++++++++ cookbooks/apache/resources/site.rb | 27 +++++++ 3 files changed, 110 insertions(+), 60 deletions(-) delete mode 100644 cookbooks/apache/definitions/apache_site.rb create mode 100644 cookbooks/apache/providers/site.rb create mode 100644 cookbooks/apache/resources/site.rb diff --git a/cookbooks/apache/definitions/apache_site.rb b/cookbooks/apache/definitions/apache_site.rb deleted file mode 100644 index 53620a113..000000000 --- a/cookbooks/apache/definitions/apache_site.rb +++ /dev/null @@ -1,60 +0,0 @@ -# -# Cookbook Name:: apache -# Definition:: apache_site -# -# 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_site, :action => [ :create, :enable ], :variables => {} do - name = params[:name] - directory = params[:directory] || "/var/www/#{name}" - site_action = params[:action] - link_name = name == "default" ? "000-default" : name - - if site_action.include?(:create) or site_action.include?(:enable) - template "/etc/apache2/sites-available/#{name}" do - cookbook params[:cookbook] - source params[:template] - owner "root" - group "root" - mode 0644 - variables params[:variables].merge(:name => name, :directory => directory) - if File.exists?("/etc/apache2/sites-enabled/#{link_name}") - notifies :reload, "service[apache2]" - end - end - end - - if site_action.include?(:enable) - execute "a2ensite-#{name}" do - command "/usr/sbin/a2ensite #{name}" - notifies :restart, "service[apache2]" - not_if { File.exists?("/etc/apache2/sites-enabled/#{link_name}") } - end - elsif site_action.include?(:disable) or site_action.include?(:delete) - execute "a2dissite-#{name}" do - action :run - command "/usr/sbin/a2dissite #{name}" - notifies :restart, "service[apache2]" - only_if { File.exists?("/etc/apache2/sites-enabled/#{link_name}") } - end - end - - if site_action.include?(:delete) - file "/etc/apache2/sites-available/#{name}" do - action :delete - end - end -end diff --git a/cookbooks/apache/providers/site.rb b/cookbooks/apache/providers/site.rb new file mode 100644 index 000000000..145d35598 --- /dev/null +++ b/cookbooks/apache/providers/site.rb @@ -0,0 +1,83 @@ +# +# Cookbook Name:: postgresql +# Provider:: postgresql_database +# +# Copyright 2012, 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 :create do + t = template available_name do + cookbook new_resource.cookbook + source new_resource.template + owner "root" + group "root" + mode 0644 + variables new_resource.variables.merge(:name => new_resource.name, :directory => new_resource.directory) + if enabled? + notifies :reload, "service[apache2]" + end + end + + new_resource.updated_by_last_action(t.updated_by_last_action?) +end + +action :enable do + l = link enabled_file do + to available_file + owner "root" + group "root" + notifies :reload, "service[apache2]" + end + + new_resource.updated_by_last_action(l.updated_by_last_action?) +end + +action :disable do + l = link enabled_file do + action :delete + notifies :reload, "service[apache2]" + end + + new_resource.updated_by_last_action(l.updated_by_last_action?) +end + +action :delete do + f = file available_name do + action :delete + end + + new_resource.updated_by_last_action(f.updated_by_last_action?) +end + +def available_name + "/etc/apache2/sites-available/#{new_resource.name}" +end + +def enabled_name + case new_resource.name + when "default" + "/etc/apache2/sites-enabled/000-default" + else + "/etc/apache2/sites-enabled/#{new_resource.name}" + end +end + +def enabled? + File.exists?(enabled_name) +end diff --git a/cookbooks/apache/resources/site.rb b/cookbooks/apache/resources/site.rb new file mode 100644 index 000000000..d6735ba8f --- /dev/null +++ b/cookbooks/apache/resources/site.rb @@ -0,0 +1,27 @@ +# +# Cookbook Name:: apache +# Resource:: apache_site +# +# 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 :create, :enable, :disable, :delete +default_action [:create, :enable] + +attribute :name, :kind_of => String, :name_attribute => true +attribute :directory, :kind_of => String +attribute :cookbook, :kind_of => String +attribute :template, :kind_of => String, :required => true +attribute :variables, :kind_of => Hash, :default => {} -- 2.43.2