Class: Puppet::HTTP::Service::Report Private

Inherits:
Puppet::HTTP::Service show all
Defined in:
lib/puppet/http/service/report.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

The Report service is used to submit run reports to the report server

Constant Summary collapse

API =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Returns Default API for the report service.

Returns:

  • (String)

    Default API for the report service

'/puppet/v3'.freeze

Constants inherited from Puppet::HTTP::Service

EXCLUDED_FORMATS, SERVICE_NAMES

Instance Attribute Summary

Attributes inherited from Puppet::HTTP::Service

#url

Instance Method Summary collapse

Methods inherited from Puppet::HTTP::Service

#connect, create_service, valid_name?, #with_base_url

Constructor Details

#initialize(client, session, server, port) ⇒ Report

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Report.

Parameters:

  • client (Puppet::HTTP::Client)
  • session (Puppet::HTTP::Session)
  • server (String)

    (Puppet) If an explicit server is given, create a service using that server. If server is nil, the default value is used to create the service.

  • port (Integer)

    (Puppet) If an explicit port is given, create a service using that port. If port is nil, the default value is used to create the service.


24
25
26
27
# File 'lib/puppet/http/service/report.rb', line 24

def initialize(client, session, server, port)
  url = build_url(API, server || Puppet[:report_server], port || Puppet[:report_port])
  super(client, session, url)
end

Instance Method Details

#put_report(name, report, environment:) ⇒ Puppet::HTTP::Response

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Submit a report to the report server

Parameters:

  • name (String)

    the name of the report being submitted

  • report (Puppet::Transaction::Report)

    run report to be submitted

  • environment (String)

    name of the agent environment

Returns:


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/puppet/http/service/report.rb', line 40

def put_report(name, report, environment:)
  formatter = Puppet::Network::FormatHandler.format_for(Puppet[:preferred_serialization_format])
  headers = add_puppet_headers(
    'Accept' => get_mime_types(Puppet::Transaction::Report).join(', '),
    'Content-Type' => formatter.mime
  )

  response = @client.put(
    with_base_url("/report/#{name}"),
    serialize(formatter, report),
    headers: headers,
    params: { environment: environment },
  )

  # override parent's process_response handling
  @session.process_response(response)

  if response.success?
    response
  elsif !@session.supports?(:report, 'json') && Puppet[:preferred_serialization_format] != 'pson'
    #TRANSLATORS "pson", "preferred_serialization_format", and "puppetserver" should not be translated
    raise Puppet::HTTP::ProtocolError.new(_("To submit reports to a server running puppetserver %{server_version}, set preferred_serialization_format to pson") % { server_version: response[Puppet::HTTP::HEADER_PUPPET_VERSION]})
  else
    raise Puppet::HTTP::ResponseError.new(response)
  end
end