110: def merge_parameters(resource)
111: catalog_params = {}
112: resource.each do |param, value|
113: catalog_params[param.to_s] = value
114: end
115:
116: db_params = {}
117:
118: deletions = []
119: @params_hash.each do |value|
120:
121: deletions << value['id'] and next unless catalog_params.include?(value['name'])
122:
123:
124: db_params[value['name']] ||= []
125: db_params[value['name']] << value
126: end
127:
128:
129:
130:
131:
132: db_params.each do |name, value_hashes|
133: values = value_hashes.collect { |v| v['value'] }
134:
135: unless value_compare(catalog_params[name], values)
136: value_hashes.each { |v| deletions << v['id'] }
137: end
138: end
139:
140:
141: Puppet::Rails::ParamValue.delete(deletions) unless deletions.empty?
142:
143:
144: catalog_params.each do |name, value|
145: next if db_params.include?(name)
146: values = value.is_a?(Array) ? value : [value]
147:
148: values.each do |v|
149: param_values.build(:value => serialize_value(v), :line => resource.line, :param_name => Puppet::Rails::ParamName.accumulate_by_name(name))
150: end
151: end
152: end