Class: Puppet::Provider::Zabbix
- Inherits:
-
Puppet::Provider
- Object
- Puppet::Provider
- Puppet::Provider::Zabbix
- Defined in:
- lib/puppet/provider/zabbix.rb
Overview
zabbix provider type for puppet
Class Method Summary collapse
-
.a_number?(s) ⇒ Boolean
Is it an number?.
-
.check_host(host, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Check if host exists.
-
.check_proxy(host, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Check if proxy exists.
- .check_template_exist(template, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
-
.check_template_in_host(host, template, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Check if given template name exists in current host.
- .check_template_is_equal(template, template_source, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
-
.create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Create the api connection.
-
.get_template_id(zbx, template) ⇒ Object
Get the template id from the name.
-
.require_zabbix ⇒ Object
Require the zabbixapi gem.
Class Method Details
.a_number?(s) ⇒ Boolean
Is it an number?
74 75 76 |
# File 'lib/puppet/provider/zabbix.rb', line 74 def self.a_number?(s) s.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/).nil? ? false : true end |
.check_host(host, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Check if host exists. When error raised, return false.
21 22 23 24 25 26 |
# File 'lib/puppet/provider/zabbix.rb', line 21 def self.check_host(host, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) zbx = create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) zbx.hosts.get_id(host: host) rescue Puppet::ExecutionFailure false end |
.check_proxy(host, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Check if proxy exists. When error raised, return false.
29 30 31 32 33 34 35 |
# File 'lib/puppet/provider/zabbix.rb', line 29 def self.check_proxy(host, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) require_zabbix zbx = create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) zbx.proxies.get_id(host: host) rescue Puppet::ExecutionFailure false end |
.check_template_exist(template, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/puppet/provider/zabbix.rb', line 51 def self.check_template_exist(template, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) zbx = create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) zbx.templates.get_id(host: template) rescue Puppet::ExecutionFailure false end |
.check_template_in_host(host, template, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Check if given template name exists in current host.
44 45 46 47 48 49 |
# File 'lib/puppet/provider/zabbix.rb', line 44 def self.check_template_in_host(host, template, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) zbx = create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) template_id = get_template_id(zbx, template) template_array = zbx.templates.get_ids_by_host(hostids: [zbx.hosts.get_id(host: host)]) template_array.include?(template_id.to_s) end |
.check_template_is_equal(template, template_source, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/puppet/provider/zabbix.rb', line 58 def self.check_template_is_equal(template, template_source, zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) zbx = create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) exported = zbx.configurations.export( format: 'xml', options: { templates: [zbx.templates.get_id(host: template)] } ) exported_clean = exported.gsub(/>\s*/, '>').gsub(/\s*</, '<').gsub(/<date>.*<\/date>/, 'DATEWASHERE') template_source_clean = template_source.gsub(/>\s*/, '>').gsub(/\s*</, '<').gsub(/<date>.*<\/date>/, 'DATEWASHERE') exported_clean.eql? template_source_clean rescue Puppet::ExecutionFailure false end |
.create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) ⇒ Object
Create the api connection
10 11 12 13 14 15 16 17 18 |
# File 'lib/puppet/provider/zabbix.rb', line 10 def self.create_connection(zabbix_url, zabbix_user, zabbix_pass, apache_use_ssl) protocol = apache_use_ssl ? 'https' : 'http' zbx = ZabbixApi.connect( url: "#{protocol}://#{zabbix_url}/api_jsonrpc.php", user: zabbix_user, password: zabbix_pass ) zbx end |
.get_template_id(zbx, template) ⇒ Object
Get the template id from the name.
38 39 40 41 |
# File 'lib/puppet/provider/zabbix.rb', line 38 def self.get_template_id(zbx, template) return template if a_number?(template) zbx.templates.get_id(host: template) end |
.require_zabbix ⇒ Object
Require the zabbixapi gem
5 6 7 |
# File 'lib/puppet/provider/zabbix.rb', line 5 def self.require_zabbix require 'zabbixapi' end |