summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-03-24 21:24:29 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-03-24 21:24:29 +0000
commit2c3abbeef6298683dd199f2a5e663caaaa88dffa (patch)
treee20950ee2d67a4e4aa8d6b267814aecfe2b5570d /lib/puppet/parser
parent33f4a66a4ead50a570bd5eeeb97087829f84e132 (diff)
downloadpuppet-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.rb34
-rw-r--r--lib/puppet/parser/resource/param.rb8
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