X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/4787523adf3d90b98c0d23d405f7609fb07829fc..5844c5bc2edf22e4d6a4316f887adf758584a008:/cookbooks/munin/resources/plugin.rb diff --git a/cookbooks/munin/resources/plugin.rb b/cookbooks/munin/resources/plugin.rb index 758d9b413..bc58bf975 100644 --- a/cookbooks/munin/resources/plugin.rb +++ b/cookbooks/munin/resources/plugin.rb @@ -1,14 +1,14 @@ # -# Cookbook Name:: munin -# Resource:: munin_plugin +# Cookbook:: munin +# Provider:: munin_plugin # -# Copyright 2013, OpenStreetMap Foundation +# 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 +# https://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, @@ -17,11 +17,69 @@ # 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 => {} +property :plugin, :kind_of => String, :name_property => true +property :target, :kind_of => String +property :conf, :kind_of => String +property :conf_cookbook, :kind_of => String +property :conf_variables, :kind_of => Hash, :default => {} +property :restart_munin, :kind_of => [TrueClass, FalseClass], :default => true + +action :create do + link_action = case target_path + when nil then :delete + else :create + end + + link plugin_path do + action link_action + to target_path + end + + if new_resource.conf + munin_plugin_conf new_resource.plugin do + cookbook new_resource.conf_cookbook + template new_resource.conf + variables new_resource.conf_variables + restart_munin false + end + end +end + +action :delete do + link plugin_path do + action :delete + end + + if new_resource.conf + munin_plugin_conf new_resource.plugin do + action :delete + restart_munin false + end + end +end + +action_class do + def plugin_path + "/etc/munin/plugins/#{new_resource.plugin}" + end + + def target_path + if ::File.exist?(target) + target + elsif ::File.exist?("/usr/local/share/munin/plugins/#{target}") + "/usr/local/share/munin/plugins/#{target}" + elsif ::File.exist?("/usr/share/munin/plugins/#{target}") + "/usr/share/munin/plugins/#{target}" + end + end + + def target + new_resource.target || new_resource.plugin + end +end + +def after_created + notifies :restart, "service[munin-node]" if restart_munin +end