class Kafo::Param

Attributes

condition[RW]
default[RW]
doc[RW]
groups[W]
module[R]
name[R]
value_set[RW]

Public Class Methods

new(builder, name) click to toggle source
# File lib/kafo/param.rb, line 9
def initialize(builder, name)
  @name   = name
  @module = builder
end

Public Instance Methods

<=>(o) click to toggle source
# File lib/kafo/param.rb, line 106
def <=> o
  unless KafoConfigure.config.app[:no_prefix]
    r = self.module_name <=> o.module_name
    return r unless r == 0
  end
  self.name <=> o.name
end
condition_value() click to toggle source
# File lib/kafo/param.rb, line 118
def condition_value
  value.to_s
end
dump_default() click to toggle source
# File lib/kafo/param.rb, line 28
def dump_default
  default
end
groups() click to toggle source
# File lib/kafo/param.rb, line 14
def groups
  @groups || []
end
module_name() click to toggle source
# File lib/kafo/param.rb, line 32
def module_name
  self.module.name
end
multivalued?() click to toggle source

To be overwritten in children

# File lib/kafo/param.rb, line 102
def multivalued?
  false
end
set_default(defaults) click to toggle source
# File lib/kafo/param.rb, line 40
def set_default(defaults)
  if default == 'UNSET'
    self.value = nil
  else
    if defaults.has_key?(default)
      value = defaults[default]
      case value
        when :undef
          # value can be set to :undef if value is not defined
          # (e.g. puppetmaster = $::puppetmaster which is not defined yet)
          self.value = nil
        when :undefined
          # in puppet 2.7 :undefined means that it's param which value is
          # not set by another parameter (e.g. foreman_group = 'something')
          # which means, default is sensible unlike dumped default
          # newer puppet has default dump in format 'value' => 'value' so
          # it's handled correctly by else branch
          self.value = self.default
        else
          self.value = value
      end
      # if we don't have default value from dump (can happen for modules added from hooks)
      # we fallback to their own default values which must be sensible
    else
      self.value = self.default
    end
  end
end
set_value_by_config(config) click to toggle source
# File lib/kafo/param.rb, line 69
def set_value_by_config(config)
  base       = config[self.module.class_name]
  self.value = base[name] if base.has_key?(name)
end
to_s() click to toggle source
# File lib/kafo/param.rb, line 36
def to_s
  "#<#{self.class}:#{self.object_id} @name=#{name.inspect} @default=#{default.inspect} @value=#{value.inspect}>"
end
valid?() click to toggle source
# File lib/kafo/param.rb, line 74
def valid?
  validations = self.module.validations(self)
  # we get validations that can also run on other arguments, we need to take only current param
  # also we want to clone validations so we don't interfere
  validations.map! do |v|
    v = v.clone
    if v.name == 'validate_re'
      # validate_re does not take more variables as arguments, instead we need to pass all arguments
      args = v.arguments
    else
      args = v.arguments.select { |a| a.to_s == "$#{self.name}" }
    end
    v.arguments = Puppet::Parser::AST::ASTArray.new :children => args
    v
  end

  validator = Validator.new([self])
  validations.map! do |v|
    result = v.evaluate(validator)
    # validate_re returns nil if succeeds
    result = true if v.name == 'validate_re' && result.nil?
    result
  end

  validations.all?
end
value() click to toggle source

we use @#value_set flag because even nil can be valid value

# File lib/kafo/param.rb, line 19
def value
  @value_set ? @value : default
end
value=(value) click to toggle source
# File lib/kafo/param.rb, line 23
def value=(value)
  @value_set = true
  @value     = value == 'UNDEF' ? nil : value
end
visible?(context = []) click to toggle source
# File lib/kafo/param.rb, line 114
def visible?(context = [])
  condition.nil? || condition.empty? ? true : evaluate_condition(context)
end