summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsdelano <stephen@opscode.com>2010-08-23 13:14:30 -0700
committersdelano <stephen@opscode.com>2010-08-26 13:19:38 -0700
commit86d4d6c9f8f794e9579cff47317126e82e775df6 (patch)
treeb6c0c2f08d72c4bf13171842b1aedd040f810bbc
parent26f0e5974c8a16ee22e955fe9533e4352106a3ce (diff)
downloadchef-86d4d6c9f8f794e9579cff47317126e82e775df6.tar.gz
enforce versions when listing cookbooks for nodes
-rw-r--r--chef-server-api/app/controllers/nodes.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/chef-server-api/app/controllers/nodes.rb b/chef-server-api/app/controllers/nodes.rb
index b106a0ccc9..e82599e476 100644
--- a/chef-server-api/app/controllers/nodes.rb
+++ b/chef-server-api/app/controllers/nodes.rb
@@ -97,7 +97,12 @@ class Nodes < Application
private
def load_all_files(node_name)
- all_cookbooks = Chef::CookbookVersion.cdb_list(true).inject({}) {|hsh,record| hsh[record.name] = record ; hsh}
+ all_cookbooks = Chef::CookbookVersion.cdb_list(true).inject({}) do |res, cookbook|
+ version = Gem::Version.new cookbook.version
+ newest_version = res.has_key?(cookbook.name) ? version > Gem::Version.new(res[cookbook.name].version) : true
+ res[cookbook.name] = cookbook if newest_version
+ res
+ end
included_cookbooks = cookbooks_for_node(node_name, all_cookbooks)
nodes_cookbooks = Hash.new