fuel-plugin-external-zabbix/deployment_scripts/puppet/modules/plugin_zabbix/lib/puppet/provider/plugin_zabbix_template_link/ruby.rb

52 lines
2.1 KiB
Ruby

$LOAD_PATH.push(File.join(File.dirname(__FILE__), '..', '..', '..'))
require 'puppet/provider/plugin_zabbix'
require 'digest/md5'
Puppet::Type.type(:plugin_zabbix_template_link).provide(:ruby,
:parent => Puppet::Provider::Plugin_zabbix) do
def get_ids_by_host(hostid)
results = []
api_request(resource[:api],
{:method => "template.get",
:params => {:hostids => [hostid]}}).each do |template|
results << template["templateid"]
end
results
end
def exists?
auth(resource[:api])
hostid = get_host(resource[:api], resource[:host])
raise(Puppet::Error, "Host #{resource[:host]} does not exist") unless not hostid.empty?
templateid = api_request(resource[:api],
{:method => "template.get",
:params => {:filter => {:host => [resource[:template]]}}})
raise(Puppet::Error, "Template #{resource[:template]} does not exist") unless not templateid.empty?
get_ids_by_host(hostid[0]["hostid"]).include?(templateid[0]["templateid"])
end
def create
hostid = get_host(resource[:api], resource[:host])
templateid = api_request(resource[:api],
{:method => "template.get",
:params => {:filter => {:host => [resource[:template]]}}})
api_request(resource[:api],
{:method => "template.massAdd",
:params => {:hosts => [{:hostid => hostid[0]["hostid"]}],
:templates => [{:templateid => templateid[0]["templateid"]}]}})
end
def destroy
hostid = get_host(resource[:api], resource[:host])
templateid = api_request(resource[:api],
{:method => "template.get",
:params => {:filter => {:host => [resource[:template]]}}})
api_request(resource[:api],
{:method => "template.massRemove",
:params => {:hostids => [hostid[0]["hostid"]],
:templateids => templateid[0]["templateid"]}})
end
end