X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/9d27360314f8e4e9844cde4059f98fac52250d36..ab47927c016597f8602b81dcdc168ad5c335389d:/cookbooks/munin/resources/plugin.rb diff --git a/cookbooks/munin/resources/plugin.rb b/cookbooks/munin/resources/plugin.rb index 5d36e13a5..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,16 +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 -def initialize(*args) - super - notifies :restart, "service[munin-node]" +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