diff options
Diffstat (limited to 'lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb')
-rw-r--r-- | lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb b/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb index b11687b..8e693b5 100644 --- a/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb +++ b/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/rest_error_response' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/rest_error_response" module ChefZero module Endpoints @@ -8,26 +8,26 @@ module ChefZero class EnvironmentCookbookVersionsEndpoint < RestBase def post(request) - cookbook_names = list_data(request, request.rest_path[0..1] + ['cookbooks']) + cookbook_names = list_data(request, request.rest_path[0..1] + ["cookbooks"]) # Get the list of cookbooks and versions desired by the runlist desired_versions = {} - run_list = FFI_Yajl::Parser.parse(request.body, :create_additions => false)['run_list'] + run_list = FFI_Yajl::Parser.parse(request.body, :create_additions => false)["run_list"] run_list.each do |run_list_entry| if run_list_entry =~ /(.+)::.+\@(.+)/ || run_list_entry =~ /(.+)\@(.+)/ raise RestErrorResponse.new(412, "No such cookbook: #{$1}") if !cookbook_names.include?($1) - raise RestErrorResponse.new(412, "No such cookbook version for cookbook #{$1}: #{$2}") if !list_data(request, request.rest_path[0..1] + ['cookbooks', $1]).include?($2) + raise RestErrorResponse.new(412, "No such cookbook version for cookbook #{$1}: #{$2}") if !list_data(request, request.rest_path[0..1] + ["cookbooks", $1]).include?($2) desired_versions[$1] = [ $2 ] else - desired_cookbook = run_list_entry.split('::')[0] + desired_cookbook = run_list_entry.split("::")[0] raise RestErrorResponse.new(412, "No such cookbook: #{desired_cookbook}") if !cookbook_names.include?(desired_cookbook) - desired_versions[desired_cookbook] = list_data(request, request.rest_path[0..1] + ['cookbooks', desired_cookbook]) + desired_versions[desired_cookbook] = list_data(request, request.rest_path[0..1] + ["cookbooks", desired_cookbook]) end end # Filter by environment constraints environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false) - environment_constraints = environment['cookbook_versions'] || {} + environment_constraints = environment["cookbook_versions"] || {} desired_versions.each_key do |name| desired_versions = filter_by_constraint(desired_versions, name, environment_constraints[name]) @@ -48,8 +48,8 @@ module ChefZero result = {} solved.each_pair do |name, versions| - cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', name, versions[0]]), :create_additions => false) - result[name] = ChefData::DataNormalizer.normalize_cookbook(self, request.rest_path[0..1], cookbook, name, versions[0], request.base_uri, 'MIN') + cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ["cookbooks", name, versions[0]]), :create_additions => false) + result[name] = ChefData::DataNormalizer.normalize_cookbook(self, request.rest_path[0..1], cookbook, name, versions[0], request.base_uri, "MIN") end json_response(200, result) end @@ -74,9 +74,9 @@ module ChefZero new_unsolved = unsolved[1..-1] # Pick this cookbook, and add dependencies - cookbook_obj = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', solve_for, desired_version]), :create_additions => false) - cookbook_metadata = cookbook_obj['metadata'] || {} - cookbook_dependencies = cookbook_metadata['dependencies'] || {} + cookbook_obj = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ["cookbooks", solve_for, desired_version]), :create_additions => false) + cookbook_metadata = cookbook_obj["metadata"] || {} + cookbook_dependencies = cookbook_metadata["dependencies"] || {} dep_not_found = false cookbook_dependencies.each_pair do |dep_name, dep_constraint| # If the dep is not already in the list, add it to the list to solve @@ -84,12 +84,12 @@ module ChefZero if !new_desired_versions.has_key?(dep_name) new_unsolved = new_unsolved + [dep_name] # If the dep is missing, we will try other versions of the cookbook that might not have the bad dep. - if !exists_data_dir?(request, request.rest_path[0..1] + ['cookbooks', dep_name]) + if !exists_data_dir?(request, request.rest_path[0..1] + ["cookbooks", dep_name]) @last_missing_dep = dep_name.to_s dep_not_found = true break end - new_desired_versions[dep_name] = list_data(request, request.rest_path[0..1] + ['cookbooks', dep_name]) + new_desired_versions[dep_name] = list_data(request, request.rest_path[0..1] + ["cookbooks", dep_name]) new_desired_versions = filter_by_constraint(new_desired_versions, dep_name, environment_constraints[dep_name]) end new_desired_versions = filter_by_constraint(new_desired_versions, dep_name, dep_constraint) |