diff options
Diffstat (limited to 'lib/puppet/provider/naginator.rb')
-rw-r--r-- | lib/puppet/provider/naginator.rb | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/puppet/provider/naginator.rb b/lib/puppet/provider/naginator.rb new file mode 100644 index 000000000..8e8a3d65e --- /dev/null +++ b/lib/puppet/provider/naginator.rb @@ -0,0 +1,55 @@ +# Created by Luke Kanies on 2007-11-27. +# Copyright (c) 2007. All rights reserved. + +require 'puppet' +require 'puppet/provider/parsedfile' +require 'puppet/external/nagios' + +# The base class for all Naginator providers. +class Puppet::Provider::Naginator < Puppet::Provider::ParsedFile + # Retrieve the associated class from Nagios::Base. + def self.nagios_type + unless defined?(@nagios_type) and @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 '%s'" % 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 + + def self.parse(text) + Nagios::Parser.new.parse(text) + end + + def self.to_file(records) + header + records.collect { |record| record.to_s }.join("\n") + end + + def self.skip_record?(record) + false + end + + def self.valid_attr?(klass, attr_name) + nagios_type.parameters.include?(attr_name) + end + + 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 +end |