diff options
Diffstat (limited to 'lib/chef/knife/raw.rb')
-rw-r--r-- | lib/chef/knife/raw.rb | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/lib/chef/knife/raw.rb b/lib/chef/knife/raw.rb index 5f357c6f1e..2756de1a5a 100644 --- a/lib/chef/knife/raw.rb +++ b/lib/chef/knife/raw.rb @@ -6,10 +6,13 @@ class Chef banner "knife raw REQUEST_PATH" deps do - require 'json' - require 'chef/rest' + require 'chef/json_compat' require 'chef/config' - require 'chef/chef_fs/raw_request' + require 'chef/http' + require 'chef/http/authenticator' + require 'chef/http/cookie_manager' + require 'chef/http/decompressor' + require 'chef/http/json_output' end option :method, @@ -29,6 +32,18 @@ class Chef :short => '-i FILE', :description => "Name of file to use for PUT or POST" + class RawInputServerAPI < Chef::HTTP + def initialize(options = {}) + options[:client_name] ||= Chef::Config[:node_name] + options[:signing_key_filename] ||= Chef::Config[:client_key] + super(Chef::Config[:chef_server_url], options) + end + use Chef::HTTP::JSONOutput + use Chef::HTTP::CookieManager + use Chef::HTTP::Decompressor + use Chef::HTTP::Authenticator + end + def run if name_args.length == 0 show_usage @@ -45,13 +60,18 @@ class Chef if config[:input] data = IO.read(config[:input]) end - chef_rest = Chef::REST.new(Chef::Config[:chef_server_url]) begin method = config[:method].to_sym - url = chef_rest.create_url(name_args[0]) - result = Chef::ChefFS::RawRequest.api_request(chef_rest, method, url, {}, data, :parse_json => config[:pretty]) - if result.is_a?(Hash) || result.is_a?(Array) - result = Chef::JSONCompat.to_json_pretty(result) + + if config[:pretty] + chef_rest = RawInputServerAPI.new + result = chef_rest.request(method, name_args[0], {'Content-Type' => 'application/json'}, data) + unless result.is_a?(String) + result = Chef::JSONCompat.to_json_pretty(result) + end + else + chef_rest = RawInputServerAPI.new(:raw_output => true) + result = chef_rest.request(method, name_args[0], {'Content-Type' => 'application/json'}, data) end output result rescue Timeout::Error => e |