From 4787523adf3d90b98c0d23d405f7609fb07829fc Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 24 Nov 2013 22:46:45 +0000 Subject: [PATCH] Convert munin_plugin and munin_plugin_conf to LWRPs --- cookbooks/munin/definitions/munin_plugin.rb | 61 ------------- .../munin/definitions/munin_plugin_conf.rb | 38 -------- cookbooks/munin/providers/plugin.rb | 89 +++++++++++++++++++ cookbooks/munin/providers/plugin_conf.rb | 48 ++++++++++ cookbooks/munin/resources/plugin.rb | 27 ++++++ cookbooks/munin/resources/plugin_conf.rb | 26 ++++++ 6 files changed, 190 insertions(+), 99 deletions(-) delete mode 100644 cookbooks/munin/definitions/munin_plugin.rb delete mode 100644 cookbooks/munin/definitions/munin_plugin_conf.rb create mode 100644 cookbooks/munin/providers/plugin.rb create mode 100644 cookbooks/munin/providers/plugin_conf.rb create mode 100644 cookbooks/munin/resources/plugin.rb create mode 100644 cookbooks/munin/resources/plugin_conf.rb diff --git a/cookbooks/munin/definitions/munin_plugin.rb b/cookbooks/munin/definitions/munin_plugin.rb deleted file mode 100644 index 4704313b7..000000000 --- a/cookbooks/munin/definitions/munin_plugin.rb +++ /dev/null @@ -1,61 +0,0 @@ -# -# Cookbook Name:: munin -# Definition:: munin_plugin -# -# 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 :munin_plugin, :action => :create do - target = params[:target] || params[:name] - - if File.exists?(target) - target_path = target - elsif File.exists?("/usr/local/share/munin/plugins/#{target}") - target_path = "/usr/local/share/munin/plugins/#{target}" - elsif File.exists?("/usr/share/munin/plugins/#{target}") - target_path = "/usr/share/munin/plugins/#{target}" - else - target_path = nil - end - - if target_path.nil? or params[:action] == :delete - link "/etc/munin/plugins/#{params[:name]}" do - action :delete - end - else - link "/etc/munin/plugins/#{params[:name]}" do - action params[:action] - to target_path - notifies :restart, "service[munin-node]" - end - end - - if params[:conf] - conf_template = params[:conf] - conf_cookbook = params[:conf_cookbook] - conf_variables = params[:conf_variables] - - munin_plugin_conf params[:name] do - action params[:action] - template conf_template - if conf_cookbook - cookbook conf_cookbook - end - if conf_variables - variables conf_variables - end - end - end -end diff --git a/cookbooks/munin/definitions/munin_plugin_conf.rb b/cookbooks/munin/definitions/munin_plugin_conf.rb deleted file mode 100644 index 91ad9894c..000000000 --- a/cookbooks/munin/definitions/munin_plugin_conf.rb +++ /dev/null @@ -1,38 +0,0 @@ -# -# Cookbook Name:: munin -# Definition:: munin_plugin_conf -# -# 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. -# - -define :munin_plugin_conf, :action => :create, :variables => {} do - if params[:action] == :create - template "/etc/munin/plugin-conf.d/#{params[:name]}" do - if params[:cookbook] - cookbook params[:cookbook] - end - source params[:template] - owner "root" - group "root" - mode 0644 - variables params[:variables].merge(:name => params[:name]) - notifies :restart, "service[munin-node]" - end - else - file "/etc/munin/plugin-conf.d/#{params[:name]}" do - action :delete - end - end -end diff --git a/cookbooks/munin/providers/plugin.rb b/cookbooks/munin/providers/plugin.rb new file mode 100644 index 000000000..4361514fb --- /dev/null +++ b/cookbooks/munin/providers/plugin.rb @@ -0,0 +1,89 @@ +# +# Cookbook Name:: munin +# Provider:: munin_plugin +# +# 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 :create do + link_action = case target_path + when nil then :delete + else :create + end + + l = link plugin_path do + action link_action + to target_path + notifies :restart, "service[munin-node]" + end + + updated = l.updated_by_last_action? + + if new_resource.conf + c = munin_plugin_conf new_resource.name do + cookbook new_resource.conf_cookbook + template new_resource.conf + variables new_resource.conf_variables + end + + updated = updated || c.updated_by_last_action? + end + + new_resource.updated_by_last_action(updated) +end + +action :delete do + l = link plugin_path do + action :delete + notifies :restart, "service[munin-node]" + end + + updated = l.updated_by_last_action? + + if new_resource.conf + c = munin_plugin_conf new_resource.name do + action :delete + end + + updated = updated || c.updated_by_last_action? + end + + new_resource.updated_by_last_action(updated) +end + +def plugin_path + "/etc/munin/plugins/#{new_resource.name}" +end + +def target_path + case + when ::File.exists?(target) + target + when ::File.exists?("/usr/local/share/munin/plugins/#{target}") + "/usr/local/share/munin/plugins/#{target}" + when ::File.exists?("/usr/share/munin/plugins/#{target}") + "/usr/share/munin/plugins/#{target}" + else + nil + end +end + +def target + new_resource.target || new_resource.name +end diff --git a/cookbooks/munin/providers/plugin_conf.rb b/cookbooks/munin/providers/plugin_conf.rb new file mode 100644 index 000000000..7a87c8800 --- /dev/null +++ b/cookbooks/munin/providers/plugin_conf.rb @@ -0,0 +1,48 @@ +# +# Cookbook Name:: munin +# Provider:: munin_plugin_conf +# +# 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 :create do + t = template config_file do + cookbook new_resource.cookbook + source new_resource.template + owner "root" + group "root" + mode 0644 + variables new_resource.variables.merge(:name => new_resource.name) + notifies :restart, "service[munin-node]" + end + + new_resource.updated_by_last_action(t.updated_by_last_action?) +end + +action :delete do + f = file config_file do + action :delete + end + + new_resource.updated_by_last_action(f.updated_by_last_action?) +end + +def config_file + "/etc/munin/plugin-conf.d/#{new_resource.name}" +end diff --git a/cookbooks/munin/resources/plugin.rb b/cookbooks/munin/resources/plugin.rb new file mode 100644 index 000000000..758d9b413 --- /dev/null +++ b/cookbooks/munin/resources/plugin.rb @@ -0,0 +1,27 @@ +# +# Cookbook Name:: munin +# Resource:: munin_plugin +# +# 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, :delete +default_action :create + +attribute :name, :kind_of => String, :name_attribute => true +attribute :target, :kind_of => String +attribute :conf, :kind_of => String +attribute :conf_cookbook, :kind_of => String +attribute :conf_variables, :kind_of => Hash, :default => {} diff --git a/cookbooks/munin/resources/plugin_conf.rb b/cookbooks/munin/resources/plugin_conf.rb new file mode 100644 index 000000000..88b453d9a --- /dev/null +++ b/cookbooks/munin/resources/plugin_conf.rb @@ -0,0 +1,26 @@ +# +# Cookbook Name:: munin +# Resource:: munin_plugin_conf +# +# 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, :delete +default_action :create + +attribute :name, :kind_of => String, :name_attribute => true +attribute :cookbook, :kind_of => String +attribute :template, :kind_of => String, :required => true +attribute :variables, :kind_of => Hash, :default => {} -- 2.43.2