Class: Puppet::Rails::ParamValue

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
Util::ReferenceSerializer
Includes:
Util::ReferenceSerializer
Defined in:
lib/vendor/puppet/rails/param_value.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Util::ReferenceSerializer

serialize_value, unserialize_value

Class Method Details

.find_all_params_from_host(db_host) ⇒ Object

returns an array of hash containing all the parameters of a given host



61
62
63
64
65
66
67
68
69
# File 'lib/vendor/puppet/rails/param_value.rb', line 61

def self.find_all_params_from_host(db_host)
  params = db_host.connection.select_all("SELECT v.id, v.value,  v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN resources r ON v.resource_id=r.id INNER JOIN param_names n ON v.param_name_id=n.id WHERE r.host_id=#{db_host.id}")
  params.each do |val|
    val['value'] = unserialize_value(val['value'])
    val['line'] = val['line'] ? Integer(val['line']) : nil
    val['resource_id'] = Integer(val['resource_id'])
  end
  params
end

.find_all_params_from_resource(db_resource) ⇒ Object

returns an array of hash containing all the parameters of a given resource



50
51
52
53
54
55
56
57
58
# File 'lib/vendor/puppet/rails/param_value.rb', line 50

def self.find_all_params_from_resource(db_resource)
  params = db_resource.connection.select_all("SELECT v.id, v.value, v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN param_names n ON v.param_name_id=n.id WHERE v.resource_id=#{db_resource.id}")
  params.each do |val|
    val['value'] = unserialize_value(val['value'])
    val['line'] = val['line'] ? Integer(val['line']) : nil
    val['resource_id'] = Integer(val['resource_id'])
  end
  params
end

.from_parser_param(param, values) ⇒ Object

Store a new parameter in a Rails db.



11
12
13
14
15
16
17
18
# File 'lib/vendor/puppet/rails/param_value.rb', line 11

def self.from_parser_param(param, values)
  values = munge_parser_values(values)

  param_name = Puppet::Rails::ParamName.find_or_create_by_name(param.to_s)
  return values.collect do |v|
    {:value => v, :param_name => param_name}
  end
end

.munge_parser_values(value) ⇒ Object

Make sure an array (or possibly not an array) of values is correctly set up for Rails. The main thing is that Resource::Reference objects should stay objects, so they just get serialized.



23
24
25
26
27
28
29
30
31
32
# File 'lib/vendor/puppet/rails/param_value.rb', line 23

def self.munge_parser_values(value)
  values = value.is_a?(Array) ? value : [value]
  values.map do |v|
    if v.is_a?(Puppet::Resource)
      v
    else
      v.to_s
    end
  end
end

Instance Method Details

#to_labelObject



45
46
47
# File 'lib/vendor/puppet/rails/param_value.rb', line 45

def to_label
  "#{self.param_name.name}"
end

#to_sObject



71
72
73
# File 'lib/vendor/puppet/rails/param_value.rb', line 71

def to_s
  "#{self.name} => #{self.value}"
end

#valueObject



35
36
37
# File 'lib/vendor/puppet/rails/param_value.rb', line 35

def value
  unserialize_value(self[:value])
end

#value=(val) ⇒ Object

I could not find a cleaner way to handle making sure that resource references were consistently serialized and deserialized.



41
42
43
# File 'lib/vendor/puppet/rails/param_value.rb', line 41

def value=(val)
  self[:value] = serialize_value(val)
end