diff options
Diffstat (limited to 'lib/chef_zero/endpoints')
71 files changed, 426 insertions, 431 deletions
diff --git a/lib/chef_zero/endpoints/acl_endpoint.rb b/lib/chef_zero/endpoints/acl_endpoint.rb index cca8392..366bb89 100644 --- a/lib/chef_zero/endpoints/acl_endpoint.rb +++ b/lib/chef_zero/endpoints/acl_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/chef_data/acl_path' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/chef_data/acl_path" module ChefZero module Endpoints @@ -17,10 +17,10 @@ module ChefZero class AclEndpoint < RestBase def validate_request(request) path = request.rest_path[0..-3] # Strip off _acl/PERM - path = path[0..1] if path.size == 3 && path[0] == 'organizations' && %w(organization organizations).include?(path[2]) + path = path[0..1] if path.size == 3 && path[0] == "organizations" && %w{organization organizations}.include?(path[2]) acl_path = ChefData::AclPath.get_acl_data_path(path) perm = request.rest_path[-1] - if !acl_path || !%w(read create update delete grant).include?(perm) + if !acl_path || !%w{read create update delete grant}.include?(perm) raise RestErrorResponse.new(404, "Object not found: #{build_uri(request.base_uri, request.rest_path)}") end [acl_path, perm] @@ -31,7 +31,7 @@ module ChefZero acls = FFI_Yajl::Parser.parse(get_data(request, path), :create_additions => false) acls[perm] = FFI_Yajl::Parser.parse(request.body, :create_additions => false)[perm] set_data(request, path, FFI_Yajl::Encoder.encode(acls, :pretty => true)) - json_response(200, {'uri' => "#{build_uri(request.base_uri, request.rest_path)}"}) + json_response(200, { "uri" => "#{build_uri(request.base_uri, request.rest_path)}" }) end end end diff --git a/lib/chef_zero/endpoints/acls_endpoint.rb b/lib/chef_zero/endpoints/acls_endpoint.rb index ad9bb31..8565eea 100644 --- a/lib/chef_zero/endpoints/acls_endpoint.rb +++ b/lib/chef_zero/endpoints/acls_endpoint.rb @@ -1,7 +1,7 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/chef_data/data_normalizer' -require 'chef_zero/chef_data/acl_path' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/chef_data/data_normalizer" +require "chef_zero/chef_data/acl_path" module ChefZero module Endpoints @@ -15,7 +15,7 @@ module ChefZero class AclsEndpoint < RestBase def get(request) path = request.rest_path[0..-2] # Strip off _acl - path = path[0..1] if path.size == 3 && path[0] == 'organizations' && %w(organization organizations).include?(path[2]) + path = path[0..1] if path.size == 3 && path[0] == "organizations" && %w{organization organizations}.include?(path[2]) acl_path = ChefData::AclPath.get_acl_data_path(path) if !acl_path raise RestErrorResponse.new(404, "Object not found: #{build_uri(request.base_uri, request.rest_path)}") diff --git a/lib/chef_zero/endpoints/actor_default_key_endpoint.rb b/lib/chef_zero/endpoints/actor_default_key_endpoint.rb index 3be1475..1985dea 100644 --- a/lib/chef_zero/endpoints/actor_default_key_endpoint.rb +++ b/lib/chef_zero/endpoints/actor_default_key_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/actor_endpoint.rb b/lib/chef_zero/endpoints/actor_endpoint.rb index dd2caf2..ea5284e 100644 --- a/lib/chef_zero/endpoints/actor_endpoint.rb +++ b/lib/chef_zero/endpoints/actor_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -21,10 +21,10 @@ module ChefZero def delete(request) result = super - if request.rest_path[0] == 'users' - list_data(request, [ 'organizations' ]).each do |org| + if request.rest_path[0] == "users" + list_data(request, [ "organizations" ]).each do |org| begin - delete_data(request, [ 'organizations', org, 'users', request.rest_path[1] ], :data_store_exceptions) + delete_data(request, [ "organizations", org, "users", request.rest_path[1] ], :data_store_exceptions) rescue DataStore::DataNotFoundError end end @@ -38,22 +38,22 @@ module ChefZero # Find out if we're updating the public key. request_body = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - if request_body['public_key'].nil? + if request_body["public_key"].nil? # If public_key is null, then don't overwrite it. Weird patchiness. body_modified = true - request_body.delete('public_key') + request_body.delete("public_key") else updating_public_key = true end # Generate private_key if requested. - if request_body.key?('private_key') + if request_body.key?("private_key") body_modified = true - if request_body.delete('private_key') + if request_body.delete("private_key") private_key, public_key = server.gen_key_pair updating_public_key = true - request_body['public_key'] = public_key + request_body["public_key"] = public_key end end @@ -73,22 +73,22 @@ module ChefZero rename_keys!(request, client_or_user_name) end - if request.rest_path[0] == 'users' + if request.rest_path[0] == "users" response = { - 'uri' => build_uri(request.base_uri, [ 'users', client_or_user_name ]) + "uri" => build_uri(request.base_uri, [ "users", client_or_user_name ]), } else response = parse_json(result[2]) end if client?(request) - response['private_key'] = private_key ? private_key : false + response["private_key"] = private_key ? private_key : false else - response['private_key'] = private_key if private_key - response.delete('public_key') unless updating_public_key + response["private_key"] = private_key if private_key + response.delete("public_key") unless updating_public_key end - response.delete('password') + response.delete("password") json_response(result[0], response) else @@ -125,7 +125,7 @@ module ChefZero def rename_keys!(request, new_client_or_user_name) orig_keys_path = keys_path_base(request) new_keys_path = orig_keys_path.dup - .tap {|path| path[-2] = new_client_or_user_name } + .tap { |path| path[-2] = new_client_or_user_name } key_names = list_data_or_else(request, orig_keys_path, nil) return unless key_names # No keys to move @@ -154,7 +154,7 @@ module ChefZero rescue DataStore::DataNotFoundError end - def client?(request, rest_path=nil) + def client?(request, rest_path = nil) rest_path ||= request.rest_path request.rest_path[2] == "clients" end @@ -165,7 +165,7 @@ module ChefZero # /organizations/ORG/users/USER -> /organizations/ORG/user_keys/USER/keys # /users/USER -> /user_keys/USER # - def keys_path_base(request, client_or_user_name=nil) + def keys_path_base(request, client_or_user_name = nil) rest_path = (rest_path || request.rest_path).dup rest_path = rest_path.dup case rest_path[-2] diff --git a/lib/chef_zero/endpoints/actor_key_endpoint.rb b/lib/chef_zero/endpoints/actor_key_endpoint.rb index f2b65ed..a61d2f3 100644 --- a/lib/chef_zero/endpoints/actor_key_endpoint.rb +++ b/lib/chef_zero/endpoints/actor_key_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/actor_keys_endpoint.rb b/lib/chef_zero/endpoints/actor_keys_endpoint.rb index f3624d6..00c11d0 100644 --- a/lib/chef_zero/endpoints/actor_keys_endpoint.rb +++ b/lib/chef_zero/endpoints/actor_keys_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -8,7 +8,7 @@ module ChefZero DEFAULT_PUBLIC_KEY_NAME = "default" DATE_FORMAT = "%FT%TZ" # e.g. 2015-12-24T21:00:00Z - def get(request, alt_uri_root=nil) + def get(request, alt_uri_root = nil) path = data_path(request) # Get actor or 404 if it doesn't exist @@ -35,7 +35,7 @@ module ChefZero if generate_keys private_key, public_key = server.gen_key_pair else - public_key = request_body['public_key'] + public_key = request_body["public_key"] end key_name = request_body["name"] @@ -74,7 +74,6 @@ module ChefZero actor_data["public_key"] = public_key set_data(request, actor_path(request), to_json(actor_data)) - end # Returns the keys data store path, which is the same as @@ -90,7 +89,7 @@ module ChefZero end end - def list_key(request, data_path, alt_uri_root=nil) + def list_key(request, data_path, alt_uri_root = nil) key_name, expiration_date = if data_path[-1] == DEFAULT_PUBLIC_KEY_NAME [ DEFAULT_PUBLIC_KEY_NAME, "infinity" ] @@ -111,7 +110,7 @@ module ChefZero request.rest_path[2] == "clients" end - def key_uri(request, key_name, alt_uri_root=nil) + def key_uri(request, key_name, alt_uri_root = nil) uri_root = alt_uri_root.nil? ? request.rest_path : alt_uri_root build_uri(request.base_uri, [ *uri_root, key_name ]) end diff --git a/lib/chef_zero/endpoints/actors_endpoint.rb b/lib/chef_zero/endpoints/actors_endpoint.rb index 6297aed..1dcbe42 100644 --- a/lib/chef_zero/endpoints/actors_endpoint.rb +++ b/lib/chef_zero/endpoints/actors_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_list_endpoint' +require "ffi_yajl" +require "chef_zero/endpoints/rest_list_endpoint" module ChefZero module Endpoints @@ -10,13 +10,13 @@ module ChefZero # apply query filters: if one applies, stop processing rest # (precendence matches chef-server: https://github.com/chef/chef-server/blob/268a0c9/src/oc_erchef/apps/chef_objects/src/chef_user.erl#L554-L559) - if value = request.query_params['external_authentication_uid'] - response[2] = filter('external_authentication_uid', value, request, response[2]) - elsif value = request.query_params['email'] - response[2] = filter('email', value, request, response[2]) + if value = request.query_params["external_authentication_uid"] + response[2] = filter("external_authentication_uid", value, request, response[2]) + elsif value = request.query_params["email"] + response[2] = filter("email", value, request, response[2]) end - if request.query_params['verbose'] + if request.query_params["verbose"] results = parse_json(response[2]) results.each do |name, url| record = get_data(request, request.rest_path + [ name ], :nil) @@ -35,16 +35,16 @@ module ChefZero # First, find out if the user actually posted a public key. If not, make # one. request_body = parse_json(request.body) - public_key = request_body['public_key'] + public_key = request_body["public_key"] skip_key_create = !request.api_v0? && !request_body["create_key"] if !public_key && !skip_key_create private_key, public_key = server.gen_key_pair - request_body['public_key'] = public_key + request_body["public_key"] = public_key request.body = to_json(request_body) elsif skip_key_create - request_body['public_key'] = nil + request_body["public_key"] = nil request.body = to_json(request_body) end @@ -55,8 +55,8 @@ module ChefZero user_data = parse_json(result[2]) key_data = {} - key_data['private_key'] = private_key if private_key - key_data['public_key'] = public_key unless request.rest_path[0] == 'users' + key_data["private_key"] = private_key if private_key + key_data["public_key"] = public_key unless request.rest_path[0] == "users" response = if request.api_v0? diff --git a/lib/chef_zero/endpoints/authenticate_user_endpoint.rb b/lib/chef_zero/endpoints/authenticate_user_endpoint.rb index 5d5bb3b..fd26798 100644 --- a/lib/chef_zero/endpoints/authenticate_user_endpoint.rb +++ b/lib/chef_zero/endpoints/authenticate_user_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -7,23 +7,23 @@ module ChefZero class AuthenticateUserEndpoint < RestBase def post(request) request_json = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - name = request_json['username'] - password = request_json['password'] + name = request_json["username"] + password = request_json["password"] begin - user = data_store.get(['users', name]) + user = data_store.get(["users", name]) rescue ChefZero::DataStore::DataNotFoundError raise RestErrorResponse.new(401, "Bad username or password") end user = FFI_Yajl::Parser.parse(user, :create_additions => false) - user = ChefData::DataNormalizer.normalize_user(user, name, [ 'username' ], server.options[:osc_compat]) - if user['password'] != password + user = ChefData::DataNormalizer.normalize_user(user, name, [ "username" ], server.options[:osc_compat]) + if user["password"] != password raise RestErrorResponse.new(401, "Bad username or password") end # Include only particular user data in the response - user.keep_if { |key,value| %w(first_name last_name display_name email username).include?(key) } + user.keep_if { |key, value| %w{first_name last_name display_name email username}.include?(key) } json_response(200, { - 'status' => 'linked', - 'user' => user + "status" => "linked", + "user" => user, }) end end diff --git a/lib/chef_zero/endpoints/container_endpoint.rb b/lib/chef_zero/endpoints/container_endpoint.rb index bf0a184..588d787 100644 --- a/lib/chef_zero/endpoints/container_endpoint.rb +++ b/lib/chef_zero/endpoints/container_endpoint.rb @@ -1,13 +1,13 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints # /organizations/ORG/containers/NAME class ContainerEndpoint < RestObjectEndpoint def initialize(server) - super(server, %w(id containername)) + super(server, %w{id containername}) end undef_method(:put) diff --git a/lib/chef_zero/endpoints/containers_endpoint.rb b/lib/chef_zero/endpoints/containers_endpoint.rb index 8a4220f..e8708ed 100644 --- a/lib/chef_zero/endpoints/containers_endpoint.rb +++ b/lib/chef_zero/endpoints/containers_endpoint.rb @@ -1,12 +1,12 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_list_endpoint' +require "ffi_yajl" +require "chef_zero/endpoints/rest_list_endpoint" module ChefZero module Endpoints # /organizations/ORG/containers class ContainersEndpoint < RestListEndpoint def initialize(server) - super(server, %w(id containername)) + super(server, %w{id containername}) end # create a container. diff --git a/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb b/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb index e17fea2..baf80d3 100644 --- a/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb +++ b/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/chef_data/data_normalizer' +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb b/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb index b70e2c4..237f9c9 100644 --- a/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb +++ b/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/chef_data/data_normalizer' +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb b/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb index d9fdb20..a105664 100644 --- a/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb +++ b/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/chef_data/data_normalizer' +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/cookbook_endpoint.rb b/lib/chef_zero/endpoints/cookbook_endpoint.rb index 35919ad..7dce172 100644 --- a/lib/chef_zero/endpoints/cookbook_endpoint.rb +++ b/lib/chef_zero/endpoints/cookbook_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/endpoints/cookbooks_base' +require "chef_zero/endpoints/cookbooks_base" module ChefZero module Endpoints @@ -7,19 +7,19 @@ module ChefZero def get(request) filter = request.rest_path[3] case filter - when '_latest' + when "_latest" result = {} filter_cookbooks(all_cookbooks_list(request), {}, 1) do |name, versions| if versions.size > 0 - result[name] = build_uri(request.base_uri, request.rest_path[0..1] + ['cookbooks', name, versions[0]]) + result[name] = build_uri(request.base_uri, request.rest_path[0..1] + ["cookbooks", name, versions[0]]) end end json_response(200, result) - when '_recipes' + when "_recipes" result = [] filter_cookbooks(all_cookbooks_list(request), {}, 1) do |name, versions| if versions.size > 0 - cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', name, versions[0]]), :create_additions => false) + cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ["cookbooks", name, versions[0]]), :create_additions => false) result += recipe_names(name, cookbook) end end diff --git a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb index 5502ba0..55acd1a 100644 --- a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +++ b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb @@ -1,8 +1,8 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/rest_error_response' -require 'chef_zero/chef_data/data_normalizer' -require 'chef_zero/data_store/data_not_found_error' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/rest_error_response" +require "chef_zero/chef_data/data_normalizer" +require "chef_zero/data_store/data_not_found_error" module ChefZero module Endpoints @@ -23,14 +23,14 @@ module ChefZero # Honor frozen if existing_cookbook existing_cookbook_json = FFI_Yajl::Parser.parse(existing_cookbook, :create_additions => false) - if existing_cookbook_json['frozen?'] - if request.query_params['force'] != "true" + if existing_cookbook_json["frozen?"] + if request.query_params["force"] != "true" raise RestErrorResponse.new(409, "The cookbook #{name} at version #{version} is frozen. Use the 'force' option to override.") end # For some reason, you are forever unable to modify "frozen?" on a frozen cookbook. request_body = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - if !request_body['frozen?'] - request_body['frozen?'] = true + if !request_body["frozen?"] + request_body["frozen?"] = true request.body = FFI_Yajl::Encoder.encode(request_body, :pretty => true) end end @@ -74,8 +74,8 @@ module ChefZero FFI_Yajl::Parser.parse(cookbook, :create_additions => false).each_pair do |key, value| if value.is_a?(Array) value.each do |file| - if file.is_a?(Hash) && file.has_key?('checksum') - result << file['checksum'] + if file.is_a?(Hash) && file.has_key?("checksum") + result << file["checksum"] end end end @@ -86,7 +86,7 @@ module ChefZero private def hoover_unused_checksums(deleted_checksums, request) - %w(cookbooks cookbook_artifacts).each do |cookbook_type| + %w{cookbooks cookbook_artifacts}.each do |cookbook_type| begin cookbooks = data_store.list(request.rest_path[0..1] + [cookbook_type]) rescue ChefZero::DataStore::DataNotFoundError @@ -106,7 +106,7 @@ module ChefZero # This deals with an exception on delete, but things can still get deleted # that shouldn't be. begin - delete_data(request, request.rest_path[0..1] + ['file_store', 'checksums', checksum], :data_store_exceptions) + delete_data(request, request.rest_path[0..1] + ["file_store", "checksums", checksum], :data_store_exceptions) rescue ChefZero::DataStore::DataNotFoundError end end diff --git a/lib/chef_zero/endpoints/cookbooks_base.rb b/lib/chef_zero/endpoints/cookbooks_base.rb index d138af9..10d1b5b 100644 --- a/lib/chef_zero/endpoints/cookbooks_base.rb +++ b/lib/chef_zero/endpoints/cookbooks_base.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -11,13 +11,13 @@ module ChefZero filter_cookbooks(cookbooks_list, constraints, num_versions) do |name, versions| versions_list = versions.map do |version| { - 'url' => build_uri(request.base_uri, request.rest_path[0..1] + ['cookbooks', name, version]), - 'version' => version + "url" => build_uri(request.base_uri, request.rest_path[0..1] + ["cookbooks", name, version]), + "version" => version, } end results[name] = { - 'url' => build_uri(request.base_uri, request.rest_path[0..1] + ['cookbooks', name]), - 'versions' => versions_list + "url" => build_uri(request.base_uri, request.rest_path[0..1] + ["cookbooks", name]), + "versions" => versions_list, } end results @@ -26,8 +26,8 @@ module ChefZero def all_cookbooks_list(request) result = {} # Race conditions exist here (if someone deletes while listing). I don't care. - data_store.list(request.rest_path[0..1] + ['cookbooks']).each do |name| - result[name] = data_store.list(request.rest_path[0..1] + ['cookbooks', name]) + data_store.list(request.rest_path[0..1] + ["cookbooks"]).each do |name| + result[name] = data_store.list(request.rest_path[0..1] + ["cookbooks", name]) end result end @@ -48,10 +48,10 @@ module ChefZero def recipe_names(cookbook_name, cookbook) result = [] - if cookbook['recipes'] - cookbook['recipes'].each do |recipe| - if recipe['path'] == "recipes/#{recipe['name']}" && recipe['name'][-3..-1] == '.rb' - if recipe['name'] == 'default.rb' + if cookbook["recipes"] + cookbook["recipes"].each do |recipe| + if recipe["path"] == "recipes/#{recipe['name']}" && recipe["name"][-3..-1] == ".rb" + if recipe["name"] == "default.rb" result << cookbook_name end result << "#{cookbook_name}::#{recipe['name'][0..-4]}" diff --git a/lib/chef_zero/endpoints/cookbooks_endpoint.rb b/lib/chef_zero/endpoints/cookbooks_endpoint.rb index 7aaf3e6..e3e2ebe 100644 --- a/lib/chef_zero/endpoints/cookbooks_endpoint.rb +++ b/lib/chef_zero/endpoints/cookbooks_endpoint.rb @@ -1,14 +1,14 @@ -require 'chef_zero/endpoints/cookbooks_base' +require "chef_zero/endpoints/cookbooks_base" module ChefZero module Endpoints # /cookbooks class CookbooksEndpoint < CookbooksBase def get(request) - if request.query_params['num_versions'] == 'all' + if request.query_params["num_versions"] == "all" num_versions = nil - elsif request.query_params['num_versions'] - num_versions = request.query_params['num_versions'].to_i + elsif request.query_params["num_versions"] + num_versions = request.query_params["num_versions"].to_i else num_versions = 1 end diff --git a/lib/chef_zero/endpoints/data_bag_endpoint.rb b/lib/chef_zero/endpoints/data_bag_endpoint.rb index f7a6142..2f754cf 100644 --- a/lib/chef_zero/endpoints/data_bag_endpoint.rb +++ b/lib/chef_zero/endpoints/data_bag_endpoint.rb @@ -1,14 +1,14 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_list_endpoint' -require 'chef_zero/endpoints/data_bag_item_endpoint' -require 'chef_zero/rest_error_response' +require "ffi_yajl" +require "chef_zero/endpoints/rest_list_endpoint" +require "chef_zero/endpoints/data_bag_item_endpoint" +require "chef_zero/rest_error_response" module ChefZero module Endpoints # /data/NAME class DataBagEndpoint < RestListEndpoint def initialize(server) - super(server, 'id') + super(server, "id") end def post(request) @@ -16,7 +16,7 @@ module ChefZero key = identity_keys.map { |k| json[k] }.select { |v| v }.first response = super(request) if response[0] == 201 - already_json_response(201, DataBagItemEndpoint::populate_defaults(request, request.body, request.rest_path[3], key)) + already_json_response(201, DataBagItemEndpoint.populate_defaults(request, request.body, request.rest_path[3], key)) else response end @@ -24,10 +24,10 @@ module ChefZero def get_key(contents) data_bag_item = FFI_Yajl::Parser.parse(contents, :create_additions => false) - if data_bag_item['json_class'] == 'Chef::DataBagItem' && data_bag_item['raw_data'] - data_bag_item['raw_data']['id'] + if data_bag_item["json_class"] == "Chef::DataBagItem" && data_bag_item["raw_data"] + data_bag_item["raw_data"]["id"] else - data_bag_item['id'] + data_bag_item["id"] end end @@ -35,9 +35,9 @@ module ChefZero key = request.rest_path[3] delete_data_dir(request, request.rest_path, :recursive) json_response(200, { - 'chef_type' => 'data_bag', - 'json_class' => 'Chef::DataBag', - 'name' => key + "chef_type" => "data_bag", + "json_class" => "Chef::DataBag", + "name" => key, }) end end diff --git a/lib/chef_zero/endpoints/data_bag_item_endpoint.rb b/lib/chef_zero/endpoints/data_bag_item_endpoint.rb index a1dd71c..79bfedd 100644 --- a/lib/chef_zero/endpoints/data_bag_item_endpoint.rb +++ b/lib/chef_zero/endpoints/data_bag_item_endpoint.rb @@ -1,18 +1,18 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/endpoints/data_bag_item_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/endpoints/data_bag_item_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints # /data/NAME/NAME class DataBagItemEndpoint < RestObjectEndpoint def initialize(server) - super(server, 'id') + super(server, "id") end def populate_defaults(request, response_json) - DataBagItemEndpoint::populate_defaults(request, response_json, request.rest_path[3], request.rest_path[4]) + DataBagItemEndpoint.populate_defaults(request, response_json, request.rest_path[3], request.rest_path[4]) end def self.populate_defaults(request, response_json, data_bag, data_bag_item) diff --git a/lib/chef_zero/endpoints/data_bags_endpoint.rb b/lib/chef_zero/endpoints/data_bags_endpoint.rb index 3694602..03791b0 100644 --- a/lib/chef_zero/endpoints/data_bags_endpoint.rb +++ b/lib/chef_zero/endpoints/data_bags_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_list_endpoint' +require "ffi_yajl" +require "chef_zero/endpoints/rest_list_endpoint" module ChefZero module Endpoints @@ -11,11 +11,11 @@ module ChefZero name = identity_keys.map { |k| json[k] }.select { |v| v }.first if name.nil? error(400, "Must specify #{identity_keys.map { |k| k.inspect }.join(' or ')} in JSON") - elsif exists_data_dir?(request, request.rest_path[0..1] + ['data', name]) + elsif exists_data_dir?(request, request.rest_path[0..1] + ["data", name]) error(409, "Object already exists") else - create_data_dir(request, request.rest_path[0..1] + ['data'], name, :recursive) - json_response(201, {"uri" => "#{build_uri(request.base_uri, request.rest_path + [name])}"}) + create_data_dir(request, request.rest_path[0..1] + ["data"], name, :recursive) + json_response(201, { "uri" => "#{build_uri(request.base_uri, request.rest_path + [name])}" }) end end end diff --git a/lib/chef_zero/endpoints/dummy_endpoint.rb b/lib/chef_zero/endpoints/dummy_endpoint.rb index fe16a7e..08dc30b 100644 --- a/lib/chef_zero/endpoints/dummy_endpoint.rb +++ b/lib/chef_zero/endpoints/dummy_endpoint.rb @@ -7,7 +7,6 @@ module ChefZero # called by #direct_solr_query, once each for roles, nodes, and data bag items. each RSpec example makes # 3 calls, with the expected sequence of return values [0, 1, 0]. def get(request) - # this could be made less brittle, but if things change to have more than 3 cycles, we should really # be notified by a spec failure. @mock_values ||= ([0, 1, 0] * 3).map { |val| make_response(val) } @@ -28,4 +27,3 @@ module ChefZero end end end - diff --git a/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb b/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb index 2554c98..692244d 100644 --- a/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb +++ b/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/cookbooks_base' +require "ffi_yajl" +require "chef_zero/endpoints/cookbooks_base" module ChefZero module Endpoints @@ -8,12 +8,12 @@ module ChefZero def get(request) cookbook_name = request.rest_path[5] environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false) - constraints = environment['cookbook_versions'] || {} + constraints = environment["cookbook_versions"] || {} cookbook_versions = list_data(request, request.rest_path[0..1] + request.rest_path[4..5]) - if request.query_params['num_versions'] == 'all' + if request.query_params["num_versions"] == "all" num_versions = nil - elsif request.query_params['num_versions'] - num_versions = request.query_params['num_versions'].to_i + elsif request.query_params["num_versions"] + num_versions = request.query_params["num_versions"].to_i else num_versions = nil end 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) diff --git a/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb b/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb index 166caa3..c243bd0 100644 --- a/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb +++ b/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/cookbooks_base' +require "ffi_yajl" +require "chef_zero/endpoints/cookbooks_base" module ChefZero module Endpoints @@ -7,11 +7,11 @@ module ChefZero class EnvironmentCookbooksEndpoint < CookbooksBase def get(request) environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false) - constraints = environment['cookbook_versions'] || {} - if request.query_params['num_versions'] == 'all' + constraints = environment["cookbook_versions"] || {} + if request.query_params["num_versions"] == "all" num_versions = nil - elsif request.query_params['num_versions'] - num_versions = request.query_params['num_versions'].to_i + elsif request.query_params["num_versions"] + num_versions = request.query_params["num_versions"].to_i else num_versions = 1 end diff --git a/lib/chef_zero/endpoints/environment_endpoint.rb b/lib/chef_zero/endpoints/environment_endpoint.rb index 9d89f44..6d256e8 100644 --- a/lib/chef_zero/endpoints/environment_endpoint.rb +++ b/lib/chef_zero/endpoints/environment_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/environment_nodes_endpoint.rb b/lib/chef_zero/endpoints/environment_nodes_endpoint.rb index e8eaca2..cffe596 100644 --- a/lib/chef_zero/endpoints/environment_nodes_endpoint.rb +++ b/lib/chef_zero/endpoints/environment_nodes_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -10,10 +10,10 @@ module ChefZero get_data(request, request.rest_path[0..3]) result = {} - list_data(request, request.rest_path[0..1] + ['nodes']).each do |name| - node = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['nodes', name]), :create_additions => false) - if node['chef_environment'] == request.rest_path[3] - result[name] = build_uri(request.base_uri, request.rest_path[0..1] + ['nodes', name]) + list_data(request, request.rest_path[0..1] + ["nodes"]).each do |name| + node = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ["nodes", name]), :create_additions => false) + if node["chef_environment"] == request.rest_path[3] + result[name] = build_uri(request.base_uri, request.rest_path[0..1] + ["nodes", name]) end end json_response(200, result) diff --git a/lib/chef_zero/endpoints/environment_recipes_endpoint.rb b/lib/chef_zero/endpoints/environment_recipes_endpoint.rb index 4ecd7e0..8165a68 100644 --- a/lib/chef_zero/endpoints/environment_recipes_endpoint.rb +++ b/lib/chef_zero/endpoints/environment_recipes_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/cookbooks_base' +require "ffi_yajl" +require "chef_zero/endpoints/cookbooks_base" module ChefZero module Endpoints @@ -7,11 +7,11 @@ module ChefZero class EnvironmentRecipesEndpoint < CookbooksBase def get(request) environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false) - constraints = environment['cookbook_versions'] || {} + constraints = environment["cookbook_versions"] || {} result = [] filter_cookbooks(all_cookbooks_list(request), constraints, 1) do |name, versions| if versions.size > 0 - cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', name, versions[0]]), :create_additions => false) + cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ["cookbooks", name, versions[0]]), :create_additions => false) result += recipe_names(name, cookbook) end end diff --git a/lib/chef_zero/endpoints/environment_role_endpoint.rb b/lib/chef_zero/endpoints/environment_role_endpoint.rb index 2a87bb4..b05f28a 100644 --- a/lib/chef_zero/endpoints/environment_role_endpoint.rb +++ b/lib/chef_zero/endpoints/environment_role_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/cookbooks_base' +require "ffi_yajl" +require "chef_zero/endpoints/cookbooks_base" module ChefZero module Endpoints @@ -8,7 +8,7 @@ module ChefZero class EnvironmentRoleEndpoint < CookbooksBase def get(request) # 404 if environment does not exist - if request.rest_path[2] == 'environments' + if request.rest_path[2] == "environments" environment_path = request.rest_path[0..1] + request.rest_path[2..3] role_path = request.rest_path[0..1] + request.rest_path[4..5] else @@ -20,16 +20,16 @@ module ChefZero role = FFI_Yajl::Parser.parse(get_data(request, role_path), :create_additions => false) environment_name = environment_path[3] - if environment_name == '_default' - run_list = role['run_list'] + if environment_name == "_default" + run_list = role["run_list"] else - if role['env_run_lists'] - run_list = role['env_run_lists'][environment_name] + if role["env_run_lists"] + run_list = role["env_run_lists"][environment_name] else run_list = nil end end - json_response(200, { 'run_list' => run_list }) + json_response(200, { "run_list" => run_list }) end end end diff --git a/lib/chef_zero/endpoints/file_store_file_endpoint.rb b/lib/chef_zero/endpoints/file_store_file_endpoint.rb index 4e20a5d..90b51da 100644 --- a/lib/chef_zero/endpoints/file_store_file_endpoint.rb +++ b/lib/chef_zero/endpoints/file_store_file_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -10,7 +10,7 @@ module ChefZero end def get(request) - [200, {"Content-Type" => 'application/x-binary'}, get_data(request) ] + [200, { "Content-Type" => "application/x-binary" }, get_data(request) ] end def put(request) diff --git a/lib/chef_zero/endpoints/group_endpoint.rb b/lib/chef_zero/endpoints/group_endpoint.rb index 7404d4d..fc21946 100644 --- a/lib/chef_zero/endpoints/group_endpoint.rb +++ b/lib/chef_zero/endpoints/group_endpoint.rb @@ -1,13 +1,13 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints # /organizations/ORG/groups/NAME class GroupEndpoint < RestObjectEndpoint def initialize(server) - super(server, %w(id groupname)) + super(server, %w{id groupname}) end def populate_defaults(request, response_json) diff --git a/lib/chef_zero/endpoints/groups_endpoint.rb b/lib/chef_zero/endpoints/groups_endpoint.rb index 3e75293..47cd101 100644 --- a/lib/chef_zero/endpoints/groups_endpoint.rb +++ b/lib/chef_zero/endpoints/groups_endpoint.rb @@ -1,12 +1,12 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_list_endpoint' +require "ffi_yajl" +require "chef_zero/endpoints/rest_list_endpoint" module ChefZero module Endpoints # /organizations/ORG/groups/NAME class GroupsEndpoint < RestListEndpoint def initialize(server) - super(server, %w(id groupname)) + super(server, %w{id groupname}) end end end diff --git a/lib/chef_zero/endpoints/license_endpoint.rb b/lib/chef_zero/endpoints/license_endpoint.rb index 8638875..ec85834 100644 --- a/lib/chef_zero/endpoints/license_endpoint.rb +++ b/lib/chef_zero/endpoints/license_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -9,15 +9,15 @@ module ChefZero def get(request) node_count = 0 - list_data(request, [ 'organizations' ]).each do |orgname| - node_count += list_data(request, [ 'organizations', orgname, 'nodes' ]).size + list_data(request, [ "organizations" ]).each do |orgname| + node_count += list_data(request, [ "organizations", orgname, "nodes" ]).size end json_response(200, { "limit_exceeded" => (node_count > MAX_NODE_COUNT) ? true : false, "node_license" => MAX_NODE_COUNT, "node_count" => node_count, - "upgrade_url" => 'http://blah.com' + "upgrade_url" => "http://blah.com", }) end end diff --git a/lib/chef_zero/endpoints/node_endpoint.rb b/lib/chef_zero/endpoints/node_endpoint.rb index f2bb8ba..af0e9e0 100644 --- a/lib/chef_zero/endpoints/node_endpoint.rb +++ b/lib/chef_zero/endpoints/node_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -28,4 +28,3 @@ module ChefZero end end end - diff --git a/lib/chef_zero/endpoints/node_identifiers_endpoint.rb b/lib/chef_zero/endpoints/node_identifiers_endpoint.rb index 9f89a98..68aa01f 100644 --- a/lib/chef_zero/endpoints/node_identifiers_endpoint.rb +++ b/lib/chef_zero/endpoints/node_identifiers_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'uuidtools' +require "ffi_yajl" +require "chef_zero/rest_base" +require "uuidtools" module ChefZero module Endpoints @@ -8,10 +8,10 @@ module ChefZero class NodeIdentifiersEndpoint < RestBase def get(request) if get_data(request, request.rest_path[0..3]) - result = { - :id => UUIDTools::UUID.parse_raw(request.rest_path[0..4].to_s).to_s.gsub('-',''), - :authz_id => '0'*32, - :org_id => UUIDTools::UUID.parse_raw(request.rest_path[0..1].to_s).to_s.gsub('-','') } + result = { + :id => UUIDTools::UUID.parse_raw(request.rest_path[0..4].to_s).to_s.delete("-"), + :authz_id => "0" * 32, + :org_id => UUIDTools::UUID.parse_raw(request.rest_path[0..1].to_s).to_s.delete("-") } json_response(200, result) else raise RestErrorResponse.new(404, "Object not found: #{build_uri(request.base_uri, request.rest_path)}") diff --git a/lib/chef_zero/endpoints/nodes_endpoint.rb b/lib/chef_zero/endpoints/nodes_endpoint.rb index 8b9d852..6011506 100644 --- a/lib/chef_zero/endpoints/nodes_endpoint.rb +++ b/lib/chef_zero/endpoints/nodes_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -32,4 +32,3 @@ module ChefZero end end end - diff --git a/lib/chef_zero/endpoints/not_found_endpoint.rb b/lib/chef_zero/endpoints/not_found_endpoint.rb index ddf1246..4c23800 100644 --- a/lib/chef_zero/endpoints/not_found_endpoint.rb +++ b/lib/chef_zero/endpoints/not_found_endpoint.rb @@ -1,10 +1,10 @@ -require 'ffi_yajl' +require "ffi_yajl" module ChefZero module Endpoints class NotFoundEndpoint def call(request) - return [404, {"Content-Type" => "application/json"}, FFI_Yajl::Encoder.encode({"error" => ["Object not found: #{request.env['REQUEST_PATH']}"]}, :pretty => true)] + return [404, { "Content-Type" => "application/json" }, FFI_Yajl::Encoder.encode({ "error" => ["Object not found: #{request.env['REQUEST_PATH']}"] }, :pretty => true)] end end end diff --git a/lib/chef_zero/endpoints/organization_association_request_endpoint.rb b/lib/chef_zero/endpoints/organization_association_request_endpoint.rb index 974d2c3..09be738 100644 --- a/lib/chef_zero/endpoints/organization_association_request_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_association_request_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb b/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb index 72b0e4d..aeba290 100644 --- a/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -7,22 +7,22 @@ module ChefZero class OrganizationAssociationRequestsEndpoint < RestBase def post(request) json = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - username = json['user'] + username = json["user"] orgname = request.rest_path[1] id = "#{username}-#{orgname}" - if exists_data?(request, [ 'organizations', orgname, 'users', username ]) + if exists_data?(request, [ "organizations", orgname, "users", username ]) raise RestErrorResponse.new(409, "User #{username} is already in organization #{orgname}") end - create_data(request, request.rest_path, username, '{}') + create_data(request, request.rest_path, username, "{}") json_response(201, { "uri" => build_uri(request.base_uri, request.rest_path + [ id ]) }) end def get(request) orgname = request.rest_path[1] ChefZero::Endpoints::OrganizationUserBase.get(self, request) do |username| - { "id" => "#{username}-#{orgname}", 'username' => username } + { "id" => "#{username}-#{orgname}", "username" => username } end end end diff --git a/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb b/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb index cc39a00..174235e 100644 --- a/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -7,18 +7,18 @@ module ChefZero class OrganizationAuthenticateUserEndpoint < RestBase def post(request) request_json = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - name = request_json['name'] - password = request_json['password'] + name = request_json["name"] + password = request_json["password"] begin - user = data_store.get(request.rest_path[0..-2] + ['users', name]) + user = data_store.get(request.rest_path[0..-2] + ["users", name]) user = FFI_Yajl::Parser.parse(user, :create_additions => false) - verified = user['password'] == password + verified = user["password"] == password rescue DataStore::DataNotFoundError verified = false end json_response(200, { - 'name' => name, - 'verified' => !!verified + "name" => name, + "verified" => !!verified, }) end end diff --git a/lib/chef_zero/endpoints/organization_endpoint.rb b/lib/chef_zero/endpoints/organization_endpoint.rb index a5512db..108073d 100644 --- a/lib/chef_zero/endpoints/organization_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_endpoint.rb @@ -1,37 +1,37 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints # /organizations/NAME class OrganizationEndpoint < RestBase def get(request) - org = get_data(request, request.rest_path + [ 'org' ]) + org = get_data(request, request.rest_path + [ "org" ]) already_json_response(200, populate_defaults(request, org)) end def put(request) - org = FFI_Yajl::Parser.parse(get_data(request, request.rest_path + [ 'org' ]), :create_additions => false) + org = FFI_Yajl::Parser.parse(get_data(request, request.rest_path + [ "org" ]), :create_additions => false) new_org = FFI_Yajl::Parser.parse(request.body, :create_additions => false) new_org.each do |key, value| org[key] = value end save_org = FFI_Yajl::Encoder.encode(org, :pretty => true) - if new_org['name'] != request.rest_path[-1] + if new_org["name"] != request.rest_path[-1] # This is a rename return error(400, "Cannot rename org #{request.rest_path[-1]} to #{new_org['name']}: rename not supported for orgs") end - set_data(request, request.rest_path + [ 'org' ], save_org) + set_data(request, request.rest_path + [ "org" ], save_org) json_response(200, { "uri" => "#{build_uri(request.base_uri, request.rest_path)}", - "name" => org['name'], - "org_type" => org['org_type'], - "full_name" => org['full_name'] + "name" => org["name"], + "org_type" => org["org_type"], + "full_name" => org["full_name"], }) end def delete(request) - org = get_data(request, request.rest_path + [ 'org' ]) + org = get_data(request, request.rest_path + [ "org" ]) delete_data_dir(request, request.rest_path, :recursive) already_json_response(200, populate_defaults(request, org)) end diff --git a/lib/chef_zero/endpoints/organization_user_base.rb b/lib/chef_zero/endpoints/organization_user_base.rb index d4ccf44..5be119d 100644 --- a/lib/chef_zero/endpoints/organization_user_base.rb +++ b/lib/chef_zero/endpoints/organization_user_base.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb b/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb index 953edc1..ad10377 100644 --- a/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/organization_user_endpoint.rb b/lib/chef_zero/endpoints/organization_user_endpoint.rb index 8fd97d4..9418e53 100644 --- a/lib/chef_zero/endpoints/organization_user_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_user_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -8,16 +8,16 @@ module ChefZero def get(request) username = request.rest_path[3] get_data(request) # 404 if user is not in org - user = get_data(request, [ 'users', username ]) + user = get_data(request, [ "users", username ]) user = FFI_Yajl::Parser.parse(user, :create_additions => false) - json_response(200, ChefData::DataNormalizer.normalize_user(user, username, ['username'], server.options[:osc_compat], request.method)) + json_response(200, ChefData::DataNormalizer.normalize_user(user, username, ["username"], server.options[:osc_compat], request.method)) end def delete(request) user = get_data(request) delete_data(request) user = FFI_Yajl::Parser.parse(user, :create_additions => false) - json_response(200, ChefData::DataNormalizer.normalize_user(user, request.rest_path[3], ['username'], server.options[:osc_compat])) + json_response(200, ChefData::DataNormalizer.normalize_user(user, request.rest_path[3], ["username"], server.options[:osc_compat])) end # Note: post to a named org user is not permitted, alllow invalid method handling (405) diff --git a/lib/chef_zero/endpoints/organization_user_key_endpoint.rb b/lib/chef_zero/endpoints/organization_user_key_endpoint.rb index e0c114c..8e1cfc1 100644 --- a/lib/chef_zero/endpoints/organization_user_key_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_user_key_endpoint.rb @@ -1,5 +1,5 @@ -require 'chef_zero/rest_base' -require 'chef_zero/endpoints/actor_keys_endpoint' +require "chef_zero/rest_base" +require "chef_zero/endpoints/actor_keys_endpoint" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb b/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb index 96a84fe..c08e3fa 100644 --- a/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/organization_users_endpoint.rb b/lib/chef_zero/endpoints/organization_users_endpoint.rb index 861c670..7473776 100644 --- a/lib/chef_zero/endpoints/organization_users_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_users_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/endpoints/organization_user_base' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/endpoints/organization_user_base" module ChefZero module Endpoints @@ -9,28 +9,28 @@ module ChefZero def post(request) orgname = request.rest_path[1] json = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - username = json['username'] + username = json["username"] - if exists_data?(request, [ 'organizations', orgname, 'users', username ]) + if exists_data?(request, [ "organizations", orgname, "users", username ]) raise RestErrorResponse.new(409, "User #{username} is already in organization #{orgname}") end - users = get_data(request, [ 'organizations', orgname, 'groups', 'users' ]) + users = get_data(request, [ "organizations", orgname, "groups", "users" ]) users = FFI_Yajl::Parser.parse(users, :create_additions => false) - create_data(request, request.rest_path, username, '{}') + create_data(request, request.rest_path, username, "{}") # /organizations/ORG/association_requests/USERNAME-ORG begin - delete_data(request, [ 'organizations', orgname, 'association_requests', username], :data_store_exceptions) + delete_data(request, [ "organizations", orgname, "association_requests", username], :data_store_exceptions) rescue DataStore::DataNotFoundError end # Add the user to the users group if it isn't already there - if !users['users'] || !users['users'].include?(username) - users['users'] ||= [] - users['users'] |= [ username ] - set_data(request, [ 'organizations', orgname, 'groups', 'users' ], FFI_Yajl::Encoder.encode(users, :pretty => true)) + if !users["users"] || !users["users"].include?(username) + users["users"] ||= [] + users["users"] |= [ username ] + set_data(request, [ "organizations", orgname, "groups", "users" ], FFI_Yajl::Encoder.encode(users, :pretty => true)) end json_response(201, { "uri" => build_uri(request.base_uri, request.rest_path + [ username ]) }) end diff --git a/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb b/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb index a840515..d9bac29 100644 --- a/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb +++ b/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'uuidtools' +require "ffi_yajl" +require "chef_zero/rest_base" +require "uuidtools" module ChefZero module Endpoints @@ -8,12 +8,12 @@ module ChefZero class OrganizationValidatorKeyEndpoint < RestBase def post(request) org_name = request.rest_path[-2] - validator_path = [ 'organizations', org_name, 'clients', "#{org_name}-validator"] + validator_path = [ "organizations", org_name, "clients", "#{org_name}-validator"] validator = FFI_Yajl::Parser.parse(get_data(request, validator_path), :create_additions => false) private_key, public_key = server.gen_key_pair - validator['public_key'] = public_key + validator["public_key"] = public_key set_data(request, validator_path, FFI_Yajl::Encoder.encode(validator, :pretty => true)) - json_response(200, { 'private_key' => private_key }) + json_response(200, { "private_key" => private_key }) end end end diff --git a/lib/chef_zero/endpoints/organizations_endpoint.rb b/lib/chef_zero/endpoints/organizations_endpoint.rb index 41bf03b..52fca5f 100644 --- a/lib/chef_zero/endpoints/organizations_endpoint.rb +++ b/lib/chef_zero/endpoints/organizations_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'uuidtools' +require "ffi_yajl" +require "chef_zero/rest_base" +require "uuidtools" module ChefZero module Endpoints @@ -16,8 +16,8 @@ module ChefZero def post(request) contents = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - name = contents['name'] - full_name = contents['full_name'] + name = contents["name"] + full_name = contents["full_name"] if name.nil? error(400, "Must specify 'name' in JSON") elsif full_name.nil? @@ -28,32 +28,31 @@ module ChefZero create_data_dir(request, request.rest_path, name, :requestor => request.requestor) org = { - "guid" => UUIDTools::UUID.random_create.to_s.gsub('-', ''), - "assigned_at" => Time.now.to_s + "guid" => UUIDTools::UUID.random_create.to_s.delete("-"), + "assigned_at" => Time.now.to_s, }.merge(contents) org_path = request.rest_path + [ name ] - set_data(request, org_path + [ 'org' ], FFI_Yajl::Encoder.encode(org, :pretty => true)) + set_data(request, org_path + [ "org" ], FFI_Yajl::Encoder.encode(org, :pretty => true)) if server.generate_real_keys? # Create the validator client validator_name = "#{name}-validator" - validator_path = org_path + [ 'clients', validator_name ] + validator_path = org_path + [ "clients", validator_name ] private_key, public_key = server.gen_key_pair validator = FFI_Yajl::Encoder.encode({ - 'validator' => true, - 'public_key' => public_key + "validator" => true, + "public_key" => public_key, }, :pretty => true) set_data(request, validator_path, validator) end - json_response(201, { "uri" => "#{build_uri(request.base_uri, org_path)}", "name" => name, "org_type" => org["org_type"], "full_name" => full_name, "clientname" => validator_name, - "private_key" => private_key + "private_key" => private_key, }) end end diff --git a/lib/chef_zero/endpoints/policies_endpoint.rb b/lib/chef_zero/endpoints/policies_endpoint.rb index 37493da..f830c5c 100644 --- a/lib/chef_zero/endpoints/policies_endpoint.rb +++ b/lib/chef_zero/endpoints/policies_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/chef_data/data_normalizer' +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -15,7 +15,7 @@ module ChefZero response_data[policy_name] = { uri: policy_uri, - revisions: hashify_list(revisions) + revisions: hashify_list(revisions), } end diff --git a/lib/chef_zero/endpoints/policy_endpoint.rb b/lib/chef_zero/endpoints/policy_endpoint.rb index d8c1bc8..5c77a7c 100644 --- a/lib/chef_zero/endpoints/policy_endpoint.rb +++ b/lib/chef_zero/endpoints/policy_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/chef_data/data_normalizer' +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/policy_group_endpoint.rb b/lib/chef_zero/endpoints/policy_group_endpoint.rb index 54732c8..573dc17 100644 --- a/lib/chef_zero/endpoints/policy_group_endpoint.rb +++ b/lib/chef_zero/endpoints/policy_group_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -11,7 +11,7 @@ module ChefZero def get(request) data = { uri: build_uri(request.base_uri, request.rest_path), - policies: get_policy_group_policies(request) + policies: get_policy_group_policies(request), } json_response(200, data) end @@ -24,7 +24,7 @@ module ChefZero policy_names = list_data(request, policies_path) policy_names.each do |policy_name| revision = parse_json(get_data(request, policies_path + [policy_name])) - policies_revisions[policy_name] = { revision_id: revision} + policies_revisions[policy_name] = { revision_id: revision } end policies_revisions @@ -37,7 +37,7 @@ module ChefZero data = { uri: build_uri(request.base_uri, request.rest_path), - policies: policy_group_policies + policies: policy_group_policies, } json_response(200, data) end diff --git a/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb b/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb index d227905..2643dd3 100644 --- a/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb +++ b/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -74,7 +74,6 @@ module ChefZero policy_path = request.rest_path[0..1] + ["policies", policy_name, "revisions", current_revision_id] - full_policy_doc = parse_json(get_data(request, policy_path)) full_policy_doc = ChefData::DataNormalizer.normalize_policy(full_policy_doc, policy_name, current_revision_id) return json_response(200, full_policy_doc) diff --git a/lib/chef_zero/endpoints/policy_groups_endpoint.rb b/lib/chef_zero/endpoints/policy_groups_endpoint.rb index f17db8d..a706268 100644 --- a/lib/chef_zero/endpoints/policy_groups_endpoint.rb +++ b/lib/chef_zero/endpoints/policy_groups_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/rest_base" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints @@ -26,7 +26,7 @@ module ChefZero end response_data[group_name] = { - uri: build_uri(request.base_uri, group_path) + uri: build_uri(request.base_uri, group_path), } response_data[group_name][:policies] = policies unless policies.empty? end diff --git a/lib/chef_zero/endpoints/policy_revision_endpoint.rb b/lib/chef_zero/endpoints/policy_revision_endpoint.rb index 6a77d26..64e2dca 100644 --- a/lib/chef_zero/endpoints/policy_revision_endpoint.rb +++ b/lib/chef_zero/endpoints/policy_revision_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/chef_data/data_normalizer' +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/policy_revisions_endpoint.rb b/lib/chef_zero/endpoints/policy_revisions_endpoint.rb index 7c20a24..27e019e 100644 --- a/lib/chef_zero/endpoints/policy_revisions_endpoint.rb +++ b/lib/chef_zero/endpoints/policy_revisions_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/chef_data/data_normalizer' +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/principal_endpoint.rb b/lib/chef_zero/endpoints/principal_endpoint.rb index 64c6986..ebd8315 100644 --- a/lib/chef_zero/endpoints/principal_endpoint.rb +++ b/lib/chef_zero/endpoints/principal_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -9,33 +9,33 @@ module ChefZero def get(request) name = request.rest_path[-1] # If /organizations/ORG/users/NAME exists, use this user (only org members have precedence over clients). hey are an org member. - json = get_data(request, request.rest_path[0..1] + [ 'users', name ], :nil) + json = get_data(request, request.rest_path[0..1] + [ "users", name ], :nil) if json - type = 'user' + type = "user" org_member = true else # If /organizations/ORG/clients/NAME exists, use the client. - json = get_data(request, request.rest_path[0..1] + [ 'clients', name ], :nil) + json = get_data(request, request.rest_path[0..1] + [ "clients", name ], :nil) if json - type = 'client' + type = "client" org_member = true else # If there is no client with that name, check for a user (/users/NAME) and return that with # org_member = false. - json = get_data(request, [ 'users', name ], :nil) + json = get_data(request, [ "users", name ], :nil) if json - type = 'user' + type = "user" org_member = false end end end if json principal_data = { - 'name' => name, - 'type' => type, - 'public_key' => FFI_Yajl::Parser.parse(json)['public_key'] || PUBLIC_KEY, - 'authz_id' => '0'*32, - 'org_member' => org_member + "name" => name, + "type" => type, + "public_key" => FFI_Yajl::Parser.parse(json)["public_key"] || PUBLIC_KEY, + "authz_id" => "0" * 32, + "org_member" => org_member, } response_data = @@ -47,7 +47,7 @@ module ChefZero json_response(200, response_data) else - error(404, 'Principal not found') + error(404, "Principal not found") end end end diff --git a/lib/chef_zero/endpoints/rest_list_endpoint.rb b/lib/chef_zero/endpoints/rest_list_endpoint.rb index d6556cf..0f01a68 100644 --- a/lib/chef_zero/endpoints/rest_list_endpoint.rb +++ b/lib/chef_zero/endpoints/rest_list_endpoint.rb @@ -1,11 +1,11 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints # Typical REST list endpoint (/roles or /data/BAG) class RestListEndpoint < RestBase - def initialize(server, identity_keys = [ 'name' ]) + def initialize(server, identity_keys = [ "name" ]) super(server) identity_keys = [ identity_keys ] if identity_keys.is_a?(String) @identity_keys = identity_keys @@ -29,7 +29,7 @@ module ChefZero error(400, "Must specify #{identity_keys.map { |k| k.inspect }.join(' or ')} in JSON") else create_data(request, request.rest_path, key, contents) - json_response(201, {'uri' => "#{build_uri(request.base_uri, request.rest_path + [key])}"}) + json_response(201, { "uri" => "#{build_uri(request.base_uri, request.rest_path + [key])}" }) end end diff --git a/lib/chef_zero/endpoints/rest_object_endpoint.rb b/lib/chef_zero/endpoints/rest_object_endpoint.rb index 7e839c0..1f0e9ce 100644 --- a/lib/chef_zero/endpoints/rest_object_endpoint.rb +++ b/lib/chef_zero/endpoints/rest_object_endpoint.rb @@ -1,12 +1,12 @@ -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 # Typical REST leaf endpoint (/roles/NAME or /data/BAG/NAME) class RestObjectEndpoint < RestBase - def initialize(server, identity_keys = [ 'name' ]) + def initialize(server, identity_keys = [ "name" ]) super(server) identity_keys = [ identity_keys ] if identity_keys.is_a?(String) @identity_keys = identity_keys diff --git a/lib/chef_zero/endpoints/role_endpoint.rb b/lib/chef_zero/endpoints/role_endpoint.rb index 0325169..654afca 100644 --- a/lib/chef_zero/endpoints/role_endpoint.rb +++ b/lib/chef_zero/endpoints/role_endpoint.rb @@ -1,6 +1,6 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" module ChefZero module Endpoints diff --git a/lib/chef_zero/endpoints/role_environments_endpoint.rb b/lib/chef_zero/endpoints/role_environments_endpoint.rb index d56930a..a408138 100644 --- a/lib/chef_zero/endpoints/role_environments_endpoint.rb +++ b/lib/chef_zero/endpoints/role_environments_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -7,7 +7,7 @@ module ChefZero class RoleEnvironmentsEndpoint < RestBase def get(request) role = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false) - json_response(200, [ '_default' ] + (role['env_run_lists'].keys || [])) + json_response(200, [ "_default" ] + (role["env_run_lists"].keys || [])) end end end diff --git a/lib/chef_zero/endpoints/sandbox_endpoint.rb b/lib/chef_zero/endpoints/sandbox_endpoint.rb index c6a3508..b83a4ca 100644 --- a/lib/chef_zero/endpoints/sandbox_endpoint.rb +++ b/lib/chef_zero/endpoints/sandbox_endpoint.rb @@ -1,6 +1,6 @@ -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" +require "ffi_yajl" module ChefZero module Endpoints @@ -8,8 +8,8 @@ module ChefZero class SandboxEndpoint < RestBase def put(request) existing_sandbox = FFI_Yajl::Parser.parse(get_data(request), :create_additions => false) - existing_sandbox['checksums'].each do |checksum| - if !exists_data?(request, request.rest_path[0..1] + ['file_store', 'checksums', checksum]) + existing_sandbox["checksums"].each do |checksum| + if !exists_data?(request, request.rest_path[0..1] + ["file_store", "checksums", checksum]) raise RestErrorResponse.new(503, "Checksum not uploaded: #{checksum}") end end @@ -17,9 +17,9 @@ module ChefZero json_response(200, { :guid => request.rest_path[3], :name => request.rest_path[3], - :checksums => existing_sandbox['checksums'], - :create_time => existing_sandbox['create_time'], - :is_completed => true + :checksums => existing_sandbox["checksums"], + :create_time => existing_sandbox["create_time"], + :is_completed => true, }) end end diff --git a/lib/chef_zero/endpoints/sandboxes_endpoint.rb b/lib/chef_zero/endpoints/sandboxes_endpoint.rb index 88314f7..815ff14 100644 --- a/lib/chef_zero/endpoints/sandboxes_endpoint.rb +++ b/lib/chef_zero/endpoints/sandboxes_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -13,15 +13,15 @@ module ChefZero def post(request) sandbox_checksums = [] - needed_checksums = FFI_Yajl::Parser.parse(request.body, :create_additions => false)['checksums'] + needed_checksums = FFI_Yajl::Parser.parse(request.body, :create_additions => false)["checksums"] result_checksums = {} needed_checksums.keys.each do |needed_checksum| - if list_data(request, request.rest_path[0..1] + ['file_store', 'checksums']).include?(needed_checksum) + if list_data(request, request.rest_path[0..1] + %w{file_store checksums}).include?(needed_checksum) result_checksums[needed_checksum] = { :needs_upload => false } else result_checksums[needed_checksum] = { :needs_upload => true, - :url => build_uri(request.base_uri, request.rest_path[0..1] + ['file_store', 'checksums', needed_checksum]) + :url => build_uri(request.base_uri, request.rest_path[0..1] + ["file_store", "checksums", needed_checksum]), } sandbox_checksums << needed_checksum end @@ -29,20 +29,20 @@ module ChefZero # There is an obvious race condition here. id = @next_id.to_s - @next_id+=1 + @next_id += 1 - time_str = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%S%z') + time_str = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%S%z") time_str = "#{time_str[0..21]}:#{time_str[22..23]}" create_data(request, request.rest_path, id, FFI_Yajl::Encoder.encode({ :create_time => time_str, - :checksums => sandbox_checksums + :checksums => sandbox_checksums, }, :pretty => true)) json_response(201, { :uri => build_uri(request.base_uri, request.rest_path + [id]), :checksums => result_checksums, - :sandbox_id => id + :sandbox_id => id, }) end end diff --git a/lib/chef_zero/endpoints/search_endpoint.rb b/lib/chef_zero/endpoints/search_endpoint.rb index 63d7f4a..01cfc56 100644 --- a/lib/chef_zero/endpoints/search_endpoint.rb +++ b/lib/chef_zero/endpoints/search_endpoint.rb @@ -1,9 +1,9 @@ -require 'ffi_yajl' -require 'chef_zero/endpoints/rest_object_endpoint' -require 'chef_zero/chef_data/data_normalizer' -require 'chef_zero/rest_error_response' -require 'chef_zero/solr/solr_parser' -require 'chef_zero/solr/solr_doc' +require "ffi_yajl" +require "chef_zero/endpoints/rest_object_endpoint" +require "chef_zero/chef_data/data_normalizer" +require "chef_zero/rest_error_response" +require "chef_zero/solr/solr_parser" +require "chef_zero/solr/solr_doc" module ChefZero module Endpoints @@ -12,7 +12,7 @@ module ChefZero def get(request) orgname = request.rest_path[1] results = search(request, orgname) - results['rows'] = results['rows'].map { |name,uri,value,search_value| value } + results["rows"] = results["rows"].map { |name, uri, value, search_value| value } json_response(200, results) rescue ChefZero::Solr::ParseError bad_search_request(request) @@ -22,7 +22,7 @@ module ChefZero orgname = request.rest_path[1] full_results = search(request, orgname) keys = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - partial_results = full_results['rows'].map do |name, uri, doc, search_value| + partial_results = full_results["rows"].map do |name, uri, doc, search_value| data = {} keys.each_pair do |key, path| if path.size > 0 @@ -36,14 +36,14 @@ module ChefZero end end { - 'url' => uri, - 'data' => data + "url" => uri, + "data" => data, } end json_response(200, { - 'rows' => partial_results, - 'start' => full_results['start'], - 'total' => full_results['total'] + "rows" => partial_results, + "start" => full_results["start"], + "total" => full_results["total"], }) rescue ChefZero::Solr::ParseError bad_search_request(request) @@ -52,53 +52,55 @@ module ChefZero private def bad_search_request(request) - query_string = request.query_params['q'] - resp = {"error" => ["invalid search query: '#{query_string}'"]} + query_string = request.query_params["q"] + resp = { "error" => ["invalid search query: '#{query_string}'"] } json_response(400, resp) end def search_container(request, index, orgname) - relative_parts, normalize_proc = case index - when 'client' - [ ['clients'], Proc.new { |client, name| ChefData::DataNormalizer.normalize_client(client, name, orgname) } ] - when 'node' - [ ['nodes'], Proc.new { |node, name| ChefData::DataNormalizer.normalize_node(node, name) } ] - when 'environment' - [ ['environments'], Proc.new { |environment, name| ChefData::DataNormalizer.normalize_environment(environment, name) } ] - when 'role' - [ ['roles'], Proc.new { |role, name| ChefData::DataNormalizer.normalize_role(role, name) } ] - else - [ ['data', index], Proc.new { |data_bag_item, id| ChefData::DataNormalizer.normalize_data_bag_item(data_bag_item, index, id, 'DELETE') } ] - end + relative_parts, normalize_proc = + case index + when "client" + [ ["clients"], Proc.new { |client, name| ChefData::DataNormalizer.normalize_client(client, name, orgname) } ] + when "node" + [ ["nodes"], Proc.new { |node, name| ChefData::DataNormalizer.normalize_node(node, name) } ] + when "environment" + [ ["environments"], Proc.new { |environment, name| ChefData::DataNormalizer.normalize_environment(environment, name) } ] + when "role" + [ ["roles"], Proc.new { |role, name| ChefData::DataNormalizer.normalize_role(role, name) } ] + else + [ ["data", index], Proc.new { |data_bag_item, id| ChefData::DataNormalizer.normalize_data_bag_item(data_bag_item, index, id, "DELETE") } ] + end + [ request.rest_path[0..1] + relative_parts, - normalize_proc + normalize_proc, ] end def expand_for_indexing(value, index, id) - if index == 'node' + if index == "node" result = {} - deep_merge!(value['default'] || {}, result) - deep_merge!(value['normal'] || {}, result) - deep_merge!(value['override'] || {}, result) - deep_merge!(value['automatic'] || {}, result) - result['recipe'] = [] - result['role'] = [] - if value['run_list'] - value['run_list'].each do |run_list_entry| + deep_merge!(value["default"] || {}, result) + deep_merge!(value["normal"] || {}, result) + deep_merge!(value["override"] || {}, result) + deep_merge!(value["automatic"] || {}, result) + result["recipe"] = [] + result["role"] = [] + if value["run_list"] + value["run_list"].each do |run_list_entry| if run_list_entry =~ /^(recipe|role)\[(.*)\]/ result[$1] << $2 end end end value.each_pair do |key, value| - result[key] = value unless %w(default normal override automatic).include?(key) + result[key] = value unless %w{default normal override automatic}.include?(key) end result - elsif !%w(client environment role).include?(index) - ChefData::DataNormalizer.normalize_data_bag_item(value, index, id, 'GET') + elsif !%w{client environment role}.include?(index) + ChefData::DataNormalizer.normalize_data_bag_item(value, index, id, "GET") else value end @@ -107,12 +109,12 @@ module ChefZero def search(request, orgname = nil) # Extract parameters index = request.rest_path[3] - query_string = request.query_params['q'] || '*:*' + query_string = request.query_params["q"] || "*:*" solr_query = ChefZero::Solr::SolrParser.new(query_string).parse - sort_string = request.query_params['sort'] - start = request.query_params['start'] + sort_string = request.query_params["sort"] + start = request.query_params["start"] start = start.to_i if start - rows = request.query_params['rows'] + rows = request.query_params["rows"] rows = rows.to_i if rows # Get the search container @@ -133,18 +135,18 @@ module ChefZero # Sort if sort_string sort_key, sort_order = sort_string.split(/\s+/, 2) - result = result.sort_by { |name,uri,value,search_value| ChefZero::Solr::SolrDoc.new(search_value, name)[sort_key] } + result = result.sort_by { |name, uri, value, search_value| ChefZero::Solr::SolrDoc.new(search_value, name)[sort_key] } result = result.reverse if sort_order == "DESC" end # Paginate if start - result = result[start..start+(rows||-1)] + result = result[start..start + (rows || -1)] end { - 'rows' => result, - 'start' => start || 0, - 'total' => total + "rows" => result, + "start" => start || 0, + "total" => total, } end diff --git a/lib/chef_zero/endpoints/searches_endpoint.rb b/lib/chef_zero/endpoints/searches_endpoint.rb index 10deac3..748a93c 100644 --- a/lib/chef_zero/endpoints/searches_endpoint.rb +++ b/lib/chef_zero/endpoints/searches_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -7,7 +7,7 @@ module ChefZero def get(request) # Get the result result_hash = {} - indices = (%w(client environment node role) + data_store.list(request.rest_path[0..1] + ['data'])).sort + indices = (%w{client environment node role} + data_store.list(request.rest_path[0..1] + ["data"])).sort indices.each do |index| result_hash[index] = build_uri(request.base_uri, request.rest_path + [index]) end diff --git a/lib/chef_zero/endpoints/server_api_version_endpoint.rb b/lib/chef_zero/endpoints/server_api_version_endpoint.rb index 8ddeaba..a66d3f3 100644 --- a/lib/chef_zero/endpoints/server_api_version_endpoint.rb +++ b/lib/chef_zero/endpoints/server_api_version_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -6,7 +6,7 @@ module ChefZero class ServerAPIVersionEndpoint < RestBase API_VERSION = 1 def get(request) - json_response(200, {"min_api_version"=>MIN_API_VERSION, "max_api_version"=>MAX_API_VERSION}, + json_response(200, { "min_api_version" => MIN_API_VERSION, "max_api_version" => MAX_API_VERSION }, request_version: request.api_version, response_version: API_VERSION) end end diff --git a/lib/chef_zero/endpoints/system_recovery_endpoint.rb b/lib/chef_zero/endpoints/system_recovery_endpoint.rb index be438f8..385101d 100644 --- a/lib/chef_zero/endpoints/system_recovery_endpoint.rb +++ b/lib/chef_zero/endpoints/system_recovery_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -7,19 +7,19 @@ module ChefZero class SystemRecoveryEndpoint < RestBase def post(request) request_json = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - name = request_json['username'] - password = request_json['password'] - user = get_data(request, request.rest_path[0..-2] + ['users', name], :nil) + name = request_json["username"] + password = request_json["password"] + user = get_data(request, request.rest_path[0..-2] + ["users", name], :nil) if !user raise RestErrorResponse.new(403, "Nonexistent user") end user = FFI_Yajl::Parser.parse(user, :create_additions => false) - user = ChefData::DataNormalizer.normalize_user(user, name, [ 'username' ], server.options[:osc_compat]) - if !user['recovery_authentication_enabled'] + user = ChefData::DataNormalizer.normalize_user(user, name, [ "username" ], server.options[:osc_compat]) + if !user["recovery_authentication_enabled"] raise RestErrorResponse.new(403, "Only users with recovery_authentication_enabled=true may use /system_recovery to log in") end - if user['password'] != password + if user["password"] != password raise RestErrorResponse.new(401, "Incorrect password") end diff --git a/lib/chef_zero/endpoints/user_association_request_endpoint.rb b/lib/chef_zero/endpoints/user_association_request_endpoint.rb index a83849f..424557e 100644 --- a/lib/chef_zero/endpoints/user_association_request_endpoint.rb +++ b/lib/chef_zero/endpoints/user_association_request_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -14,26 +14,26 @@ module ChefZero orgname = $1 json = FFI_Yajl::Parser.parse(request.body, :create_additions => false) - association_request_path = [ 'organizations', orgname, 'association_requests', username ] - if json['response'] == 'accept' - users = get_data(request, [ 'organizations', orgname, 'groups', 'users' ]) + association_request_path = [ "organizations", orgname, "association_requests", username ] + if json["response"] == "accept" + users = get_data(request, [ "organizations", orgname, "groups", "users" ]) users = FFI_Yajl::Parser.parse(users, :create_additions => false) delete_data(request, association_request_path) - create_data(request, [ 'organizations', orgname, 'users' ], username, '{}') + create_data(request, [ "organizations", orgname, "users" ], username, "{}") # Add the user to the users group if it isn't already there - if !users['users'] || !users['users'].include?(username) - users['users'] ||= [] - users['users'] |= [ username ] - set_data(request, [ 'organizations', orgname, 'groups', 'users' ], FFI_Yajl::Encoder.encode(users, :pretty => true)) + if !users["users"] || !users["users"].include?(username) + users["users"] ||= [] + users["users"] |= [ username ] + set_data(request, [ "organizations", orgname, "groups", "users" ], FFI_Yajl::Encoder.encode(users, :pretty => true)) end - elsif json['response'] == 'reject' + elsif json["response"] == "reject" delete_data(request, association_request_path) else raise RestErrorResponse.new(400, "response parameter was missing or set to the wrong value (must be accept or reject)") end - json_response(200, { 'organization' => { 'name' => orgname } }) + json_response(200, { "organization" => { "name" => orgname } }) end end end diff --git a/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb b/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb index ae8ba9b..617b2b1 100644 --- a/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb +++ b/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -9,8 +9,8 @@ module ChefZero get_data(request, request.rest_path[0..-3]) username = request.rest_path[1] - result = list_data(request, [ 'organizations' ]).select do |org| - exists_data?(request, [ 'organizations', org, 'association_requests', username ]) + result = list_data(request, [ "organizations" ]).select do |org| + exists_data?(request, [ "organizations", org, "association_requests", username ]) end json_response(200, { "value" => result.size }) end diff --git a/lib/chef_zero/endpoints/user_association_requests_endpoint.rb b/lib/chef_zero/endpoints/user_association_requests_endpoint.rb index d8dc6eb..c8db13b 100644 --- a/lib/chef_zero/endpoints/user_association_requests_endpoint.rb +++ b/lib/chef_zero/endpoints/user_association_requests_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -8,8 +8,8 @@ module ChefZero def get(request) get_data(request, request.rest_path[0..-2]) username = request.rest_path[1] - result = list_data(request, [ 'organizations' ]).select do |org| - exists_data?(request, [ 'organizations', org, 'association_requests', username ]) + result = list_data(request, [ "organizations" ]).select do |org| + exists_data?(request, [ "organizations", org, "association_requests", username ]) end result = result.map { |org| { "id" => "#{username}-#{org}", "orgname" => org } } json_response(200, result) diff --git a/lib/chef_zero/endpoints/user_organizations_endpoint.rb b/lib/chef_zero/endpoints/user_organizations_endpoint.rb index 3eb13c4..03eae68 100644 --- a/lib/chef_zero/endpoints/user_organizations_endpoint.rb +++ b/lib/chef_zero/endpoints/user_organizations_endpoint.rb @@ -1,5 +1,5 @@ -require 'ffi_yajl' -require 'chef_zero/rest_base' +require "ffi_yajl" +require "chef_zero/rest_base" module ChefZero module Endpoints @@ -7,11 +7,11 @@ module ChefZero class UserOrganizationsEndpoint < RestBase def get(request) username = request.rest_path[1] - result = list_data(request, [ 'organizations' ]).select do |orgname| - exists_data?(request, [ 'organizations', orgname, 'users', username ]) + result = list_data(request, [ "organizations" ]).select do |orgname| + exists_data?(request, [ "organizations", orgname, "users", username ]) end result = result.map do |orgname| - org = get_data(request, [ 'organizations', orgname, 'org' ]) + org = get_data(request, [ "organizations", orgname, "org" ]) org = FFI_Yajl::Parser.parse(org, :create_additions => false) { "organization" => ChefData::DataNormalizer.normalize_organization(org, orgname) } end diff --git a/lib/chef_zero/endpoints/version_endpoint.rb b/lib/chef_zero/endpoints/version_endpoint.rb index d38c33e..c51e893 100644 --- a/lib/chef_zero/endpoints/version_endpoint.rb +++ b/lib/chef_zero/endpoints/version_endpoint.rb @@ -1,4 +1,4 @@ -require 'chef_zero/rest_base' +require "chef_zero/rest_base" module ChefZero module Endpoints |