diff options
author | sdelano <stephen@opscode.com> | 2010-08-23 13:14:30 -0700 |
---|---|---|
committer | sdelano <stephen@opscode.com> | 2010-08-26 13:19:38 -0700 |
commit | 86d4d6c9f8f794e9579cff47317126e82e775df6 (patch) | |
tree | b6c0c2f08d72c4bf13171842b1aedd040f810bbc | |
parent | 26f0e5974c8a16ee22e955fe9533e4352106a3ce (diff) | |
download | chef-86d4d6c9f8f794e9579cff47317126e82e775df6.tar.gz |
enforce versions when listing cookbooks for nodes
-rw-r--r-- | chef-server-api/app/controllers/nodes.rb | 7 |
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 |