Sha256: 2c35df11d0c81373feb4cf56e36c776f66ce1e75c062513e43d0c9a3aca01677
Contents?: true
Size: 1.78 KB
Versions: 1
Compression:
Stored size: 1.78 KB
Contents
require 'json' require 'chef_fs/data_handler/data_handler_base' require 'chef_fs/file_system/base_fs_object' class Chef class Knife remove_const(:Raw) if const_defined?(:Raw) && Raw.name == 'Chef::Knife::Raw' # override Chef's version class Raw < Chef::Knife ChefFS = ::ChefFS banner "knife raw REQUEST_PATH" option :method, :long => '--method METHOD', :short => '-m METHOD', :default => "GET", :description => "Request method (GET, POST, PUT or DELETE). Default: GET" option :pretty, :long => '--[no-]pretty', :boolean => true, :default => true, :description => "Pretty-print JSON output. Default: true" option :input, :long => '--input FILE', :short => '-i FILE', :description => "Name of file to use for PUT or POST" 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 output ::ChefFS::FileSystem::BaseFSObject.api_request(chef_rest, config[:method].to_sym, chef_rest.create_url(name_args[0]), {}, data) 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 end # class Raw end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
knife-essentials-0.9.4 | lib/chef/knife/raw_essentials.rb |