Sha256: 7175986e0a62bb3e4b432b071071c83903e9a9ebf097bde69aff28203483893f

Contents?: true

Size: 1.75 KB

Versions: 10

Compression:

Stored size: 1.75 KB

Contents

require 'json'
require 'chef_fs/data_handler/data_handler_base'
require 'chef_fs/raw_request'

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::RawRequest.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

10 entries across 10 versions & 1 rubygems

Version Path
knife-essentials-1.0.0 lib/chef/knife/raw_essentials.rb
knife-essentials-1.0.0.beta5 lib/chef/knife/raw_essentials.rb
knife-essentials-1.0.0.beta4 lib/chef/knife/raw_essentials.rb
knife-essentials-1.0.0.beta3 lib/chef/knife/raw_essentials.rb
knife-essentials-1.0.0.beta2 lib/chef/knife/raw_essentials.rb
knife-essentials-1.0.0.beta1 lib/chef/knife/raw_essentials.rb
knife-essentials-0.9.8 lib/chef/knife/raw_essentials.rb
knife-essentials-0.9.7 lib/chef/knife/raw_essentials.rb
knife-essentials-0.9.6 lib/chef/knife/raw_essentials.rb
knife-essentials-0.9.5 lib/chef/knife/raw_essentials.rb