Class: Kafo::Param

Inherits:
Object
  • Object
show all
Defined in:
lib/kafo/param.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(builder, name) ⇒ Param

Returns a new instance of Param.



10
11
12
13
# File 'lib/kafo/param.rb', line 10

def initialize(builder, name)
  @name   = name
  @module = builder
end

Instance Attribute Details

#conditionObject

Returns the value of attribute condition.



7
8
9
# File 'lib/kafo/param.rb', line 7

def condition
  @condition
end

#defaultObject

Returns the value of attribute default.



7
8
9
# File 'lib/kafo/param.rb', line 7

def default
  @default
end

#docObject

Returns the value of attribute doc.



7
8
9
# File 'lib/kafo/param.rb', line 7

def doc
  @doc
end

#groupsObject



15
16
17
# File 'lib/kafo/param.rb', line 15

def groups
  @groups || []
end

#moduleObject (readonly)

Returns the value of attribute module.



6
7
8
# File 'lib/kafo/param.rb', line 6

def module
  @module
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/kafo/param.rb', line 6

def name
  @name
end

#value_setObject

Returns the value of attribute value_set.



7
8
9
# File 'lib/kafo/param.rb', line 7

def value_set
  @value_set
end

Instance Method Details

#<=>(o) ⇒ Object



108
109
110
111
112
113
114
# File 'lib/kafo/param.rb', line 108

def <=> o
  unless @module.configuration.app[:no_prefix]
    r = self.module_name <=> o.module_name
    return r unless r == 0
  end
  self.name <=> o.name
end

#condition_valueObject



120
121
122
# File 'lib/kafo/param.rb', line 120

def condition_value
  value.to_s
end

#dump_defaultObject



35
36
37
# File 'lib/kafo/param.rb', line 35

def dump_default
  default
end

#module_nameObject



39
40
41
# File 'lib/kafo/param.rb', line 39

def module_name
  self.module.name
end

#multivalued?Boolean

To be overwritten in children

Returns:

  • (Boolean)


104
105
106
# File 'lib/kafo/param.rb', line 104

def multivalued?
  false
end

#set_default(defaults) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/kafo/param.rb', line 47

def set_default(defaults)
  if default == 'UNSET'
    self.default = nil
  else
    # if we don't have default value from dump (can happen for modules added from hooks,
    # or without using a params class), the existing default value from the manifest will
    # be used. On calling #value, the default will be returned if no overriding value is set.
    value = defaults.has_key?(default) ? defaults[default] : 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.default = 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
      else
        self.default = value
    end
  end
end

#set_value_by_config(config) ⇒ Object



72
73
74
75
# File 'lib/kafo/param.rb', line 72

def set_value_by_config(config)
  base       = config[self.module.class_name]
  self.value = base[name] if base.has_key?(name)
end

#to_sObject



43
44
45
# File 'lib/kafo/param.rb', line 43

def to_s
  "#<#{self.class}:#{self.object_id} @name=#{name.inspect} @default=#{default.inspect} @value=#{value.inspect}>"
end

#unset_valueObject



30
31
32
33
# File 'lib/kafo/param.rb', line 30

def unset_value
  @value_set = false
  @value     = nil
end

#valid?Boolean

Returns:

  • (Boolean)


77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/kafo/param.rb', line 77

def valid?
  # 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 = self.module.validations(self).map do |v|
    # These functions do not take more variables as arguments, instead we need to pass all arguments
    if v.name == 'validate_re' || v.name == 'validate_integer'
      args = v.arguments.to_a
    else
      args = v.arguments.select { |a| a.to_s == "$#{self.name}" }
    end
    {:name => v.name, :arguments => interpret_validation_args(args)}
  end

  @validator = Validator.new
  validations.each { |v| @validator.send(v[:name], v[:arguments]) }
  @validator.errors.empty?
end

#validation_errorsObject



95
96
97
98
99
100
101
# File 'lib/kafo/param.rb', line 95

def validation_errors
  if @validator
    @validator.errors
  else
    []
  end
end

#valueObject

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



20
21
22
# File 'lib/kafo/param.rb', line 20

def value
  @value_set ? @value : default
end

#value=(value) ⇒ Object



24
25
26
27
28
# File 'lib/kafo/param.rb', line 24

def value=(value)
  @value_set = true
  value      = value.to_s if value.is_a?(::HighLine::String)  # don't persist highline extensions
  @value     = value == 'UNDEF' ? nil : value
end

#visible?(context = []) ⇒ Boolean

Returns:

  • (Boolean)


116
117
118
# File 'lib/kafo/param.rb', line 116

def visible?(context = [])
  condition.nil? || condition.empty? ? true : evaluate_condition(context)
end