diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-03-24 21:24:29 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-03-24 21:24:29 +0000 |
commit | 2c3abbeef6298683dd199f2a5e663caaaa88dffa (patch) | |
tree | e20950ee2d67a4e4aa8d6b267814aecfe2b5570d /lib/puppet/parser | |
parent | 33f4a66a4ead50a570bd5eeeb97087829f84e132 (diff) | |
download | puppet-2c3abbeef6298683dd199f2a5e663caaaa88dffa.tar.gz puppet-2c3abbeef6298683dd199f2a5e663caaaa88dffa.tar.xz puppet-2c3abbeef6298683dd199f2a5e663caaaa88dffa.zip |
Refactoring some of the rails code. The speed is now pretty good, but the tagging stuff does not seem to be working and is certainly working very ineffficiently. Blake says he is going to take a look at that.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2350 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r-- | lib/puppet/parser/resource.rb | 34 | ||||
-rw-r--r-- | lib/puppet/parser/resource/param.rb | 8 |
2 files changed, 11 insertions, 31 deletions
diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb index 8ef382204..9e14b83ee 100644 --- a/lib/puppet/parser/resource.rb +++ b/lib/puppet/parser/resource.rb @@ -258,7 +258,7 @@ class Puppet::Parser::Resource # Turn our parser resource into a Rails resource. def to_rails(host, resource = nil) args = {} - [:type, :title, :tags, :file, :line, :exported].each do |param| + [:type, :title, :line, :exported].each do |param| # 'type' isn't a valid column name, so we have to use something else. if param == :type to = :restype @@ -274,7 +274,8 @@ class Puppet::Parser::Resource if resource # We exist args.each do |param, value| - unless resource[param] == value + v = resource[param] + unless v == value resource[param] = value end end @@ -283,30 +284,17 @@ class Puppet::Parser::Resource resource = host.resources.build(args) end - # Either way, now add our parameters - newparams = @params.dup - remove = [] - resource.param_names.each do |pn| - name = pn.name.intern - if param = newparams[name] - # Mark that we found this in the db - newparams.delete(name) - param.to_rails(resource, pn) - else - remove << pn + # Handle file and tags specially + [:file, :tags].each do |param| + if self.send(param) and (!resource.send(param) or resource.send(param) != self.send(param)) + resource.send(param.to_s + "=", self.send(param)) end end - newparams.each do |name, param| - param.to_rails(resource) - end - - remove.each do |param| - resource.param_names.delete(param) - end - #obj.collection_merge(:param_names, @params) do |name, param| - # param.to_rails(obj) - #end + # Either way, now add our parameters + newparams = {} + @params.each { |name, p| newparams[name.to_s] = p } + resource.collection_merge :param_names, :existing => resource.param_names, :updates => newparams return resource end diff --git a/lib/puppet/parser/resource/param.rb b/lib/puppet/parser/resource/param.rb index 56a50de1c..bc33ba8f9 100644 --- a/lib/puppet/parser/resource/param.rb +++ b/lib/puppet/parser/resource/param.rb @@ -46,16 +46,8 @@ class Puppet::Parser::Resource::Param pn.param_values.build(:value => v.to_s) end pn.param_values = objects - #pn.save end -# pn.collection_merge(:param_values, values) do |value| -# unless pv = pn.param_values.find_by_value(value) -# pv = pn.param_values.build(:value => value) -# end -# pv -# end - return pn end |