class Chef::Knife::Raw
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/raw_essentials.rb, line 33 def run if name_args.length == 0 show_usage ui.fatal("You must provide the path you want to hit on the server") exit(1) elsif name_args.length > 1 show_usage ui.fatal("Only one path accepted for knife raw") exit(1) end path = name_args[0] data = false 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 = ::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) end output result rescue Timeout::Error => e ui.error "Server timeout" exit 1 rescue Net::HTTPServerException => e ui.error "Server responded with error #{e.response.code} \"#{e.response.message}\"" ui.error "Error Body: #{e.response.body}" if e.response.body && e.response.body != '' exit 1 end end