Class: Puppet::Provider::Naginator

Inherits:
ParsedFile show all
Defined in:
lib/vendor/puppet/provider/naginator.rb

Overview

The base class for all Naginator providers.

Constant Summary collapse

NAME_STRING =
"## --PUPPET_NAME-- (called '_naginator_name' in the manifest)"

Constants included from Util

Util::AbsolutePathPosix, Util::AbsolutePathWindows

Constants included from Util::Docs

Util::Docs::HEADER_LEVELS

Instance Attribute Summary

Attributes inherited from ParsedFile

#property_hash

Attributes included from Util::FileParsing

#line_separator, #trailing_separator

Attributes inherited from Puppet::Provider

#model, #resource

Attributes included from Util::Docs

#doc, #nodoc

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ParsedFile

backup_target, clean, clear, #create, #destroy, #exists?, filetype, filetype=, #flush, flush, flush_target, header, initvars, instances, match_providers_with_resources, mk_resource_methods, modified, prefetch, #prefetch, prefetch_all_targets, prefetch_target, record?, #record_type, resource_type=, retrieve, target_object, target_records, targets

Methods included from Util::FileParsing

#clear_records, #fields, #handle_record_line, #handle_text_line, #lines, #parse, #parse_line, #record_line, #records?, #text_line, #to_file, #to_line, #valid_attr?

Methods included from Util

absolute_path?, activerecord_version, benchmark, binread, chuser, classproxy, #execfail, #execpipe, execute, execute_posix, execute_windows, logmethods, memory, path_to_uri, proxy, replace_file, safe_posix_fork, symbolize, symbolizehash, symbolizehash!, synchronize_on, thinmark, #threadlock, uri_to_path, wait_for_output, which, withumask

Methods included from Util::POSIX

#get_posix_field, #gid, #idfield, #methodbyid, #methodbyname, #search_posix_field, #uid

Methods inherited from Puppet::Provider

#<=>, #clear, command, #command, commands, declared_feature?, default?, defaultfor, #get, initvars, instances, make_command_methods, mk_resource_methods, mkmodelmethods, #name, optional_commands, #set, specificity, supports_parameter?, #to_s

Methods included from Util::Logging

#clear_deprecation_warnings, #deprecation_warning, #send_log

Methods included from Util::Docs

#desc, #dochook, #doctable, #markdown_definitionlist, #markdown_header, #nodoc?, #pad, scrub

Methods included from Util::Warnings

clear_warnings, notice_once, warnonce

Methods included from Confiner

#confine, #confine_collection, #suitable?

Methods included from Util::Errors

#adderrorcontext, #devfail, #error_context, #exceptwrap, #fail

Constructor Details

#initialize(resource = nil) ⇒ Naginator

Returns a new instance of Naginator.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/vendor/puppet/provider/naginator.rb', line 49

def initialize(resource = nil)
  if resource.is_a?(Nagios::Base)
    # We don't use a duplicate here, because some providers (ParsedFile, at least)
    # use the hash here for later events.
    @property_hash = resource
  elsif resource
    @resource = resource if resource
    # LAK 2007-05-09: Keep the model stuff around for backward compatibility
    @model = resource
    @property_hash = self.class.nagios_type.new
  else
    @property_hash = self.class.nagios_type.new
  end
end

Class Method Details

.nagios_typeObject

Retrieve the associated class from Nagios::Base.



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/vendor/puppet/provider/naginator.rb', line 9

def self.nagios_type
  unless @nagios_type
    name = resource_type.name.to_s.sub(/^nagios_/, '')
    unless @nagios_type = Nagios::Base.type(name.to_sym)
      raise Puppet::DevError, "Could not find nagios type '#{name}'"
    end

    # And add our 'ensure' settings, since they aren't a part of
    # Naginator by default
    @nagios_type.send(:attr_accessor, :ensure, :target, :on_disk)
  end
  @nagios_type
end

.parse(text) ⇒ Object



23
24
25
26
27
# File 'lib/vendor/puppet/provider/naginator.rb', line 23

def self.parse(text)
    Nagios::Parser.new.parse(text.gsub(NAME_STRING, "_naginator_name"))
rescue => detail
    raise Puppet::Error, "Could not parse configuration for #{resource_type.name}: #{detail}"
end

.skip_record?(record) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/vendor/puppet/provider/naginator.rb', line 41

def self.skip_record?(record)
  false
end

.to_file(records) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/vendor/puppet/provider/naginator.rb', line 29

def self.to_file(records)
  header + records.collect { |record|
      # Remap the TYPE_name or _naginator_name params to the
      # name if the record is a template (register == 0)
      if record.to_s =~ /register\s+0/
          record.to_s.sub("_naginator_name", "name").sub(record.type.to_s + "_name", "name")
      else
          record.to_s.sub("_naginator_name", NAME_STRING)
      end
  }.join("\n")
end

.valid_attr?(klass, attr_name) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/vendor/puppet/provider/naginator.rb', line 45

def self.valid_attr?(klass, attr_name)
  nagios_type.parameters.include?(attr_name)
end