class Resource
Attributes
expected_properties[R]
name[R]
puppet_resource[R]
title[R]
type[R]
Public Class Methods
new(title, properties)
click to toggle source
# File lib/resource.rb, line 18 def initialize(title, properties) if title.to_s =~ /^([A-Z].+)\[(.+)\]$/ @type = $1.to_s.downcase.to_sym @name =$2.to_s.gsub(/'|"/, '') else raise ResourceError, "invalid resource title - #{title}" end @title = title @expected_properties = properties @compare_fn = lambda do |name, expected, actual| if name == :ensure if expected == 'present' return actual != :absent end if expected == 'absent' expected = expected.to_sym # user can express it as 'absent' or :absent end end expected == actual end create_resource end
Public Instance Methods
check_properties()
click to toggle source
# File lib/resource.rb, line 46 def check_properties result = { :success => true, :title => @title, :properties => [] } @expected_properties.each do |property, value| status = @compare_fn.call(property, value, @puppet_resource[property]) result[:success] = false unless status result[:properties] << { :name => property, :expected => value, :actual => @puppet_resource[property].to_s, :success => status } end result end
Private Instance Methods
create_resource()
click to toggle source
# File lib/resource.rb, line 64 def create_resource Log.debug { "Loading resource #{@title}"} start_time = Time.now if extension = Extensions[@type] Log.debug { "Found resource type '#{@type}' in extensions." } @puppet_resource = extension[:resource].call(@name) if extension[:compare_fn] Log.debug { "Loading custom compare function for resource - #{@title}"} @compare_fn = extension[:compare_fn] end else begin Log.debug { "Couldn't find resource type '#{@type}' in extensions. Creating Puppet resource." } @puppet_resource = Puppet::Resource.indirection.find("#{@type}/#{@name}") rescue Puppet::Error => e msg = "Cannot create resource type - '#{@type}'. Unkown error - #{e}" if e.message =~ /^.*Permission denied.*$/ msg = "Insufficient permissions to create resource - #{@title}" elsif e.message =~ /^.*Could not find type.*$/ msg = "Cannot create unknown resource type - '#{@type}'" end raise Resource::ResourceError, msg end end Log.debug { "Loaded resource #{@title} in #{Time.now - start_time}" } end