class Report::Rest

Public Instance Methods

handle_response(request, response) click to toggle source

This is called by the superclass when not using our httpclient.

   # File lib/puppet/indirector/report/rest.rb
24 def handle_response(request, response)
25   if !response.success?
26     server_version = response[Puppet::Network::HEADER_PUPPET_VERSION]
27     if server_version &&
28        SemanticPuppet::Version.parse(server_version).major < Puppet::Indirector::REST::MAJOR_VERSION_JSON_DEFAULT &&
29        Puppet[:preferred_serialization_format] != 'pson'
30       format = Puppet[:preferred_serialization_format]
31       raise Puppet::Error.new(_("Server version %{version} does not accept reports in '%{format}', use `preferred_serialization_format=pson`") % {version: server_version, format: format})
32     end
33   end
34 end
save(request) click to toggle source
   # File lib/puppet/indirector/report/rest.rb
 7 def save(request)
 8   session = Puppet.lookup(:http_session)
 9   api = session.route_to(:report)
10   response = api.put_report(
11     request.key,
12     request.instance,
13     environment: request.environment.to_s
14   )
15   content_type, body = parse_response(response)
16   deserialize_save(content_type, body)
17 rescue Puppet::HTTP::ResponseError => e
18   return nil if e.response.code == 404
19 
20   raise convert_to_http_error(e.response)
21 end

Private Instance Methods

deserialize_save(content_type, body) click to toggle source
   # File lib/puppet/indirector/report/rest.rb
38 def deserialize_save(content_type, body)
39   format = Puppet::Network::FormatHandler.format_for(content_type)
40   format.intern(Array, body)
41 end