Sha256: 831e5c99ddac703806aca48cfb12a30b8c3c62c9bf982be4a133cf9803e2f67a

Contents?: true

Size: 1.49 KB

Versions: 4

Compression:

Stored size: 1.49 KB

Contents

class Puppet::HTTP::Service::Report < Puppet::HTTP::Service
  API = '/puppet/v3'.freeze

  # puppet major version where JSON is enabled by default
  MAJOR_VERSION_JSON_DEFAULT = 5

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

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

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

    return response.body.to_s if response.success?

    server_version = response[Puppet::Network::HTTP::HEADER_PUPPET_VERSION]
    if server_version && SemanticPuppet::Version.parse(server_version).major < MAJOR_VERSION_JSON_DEFAULT &&
        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: server_version })
    end

    raise Puppet::HTTP::ResponseError.new(response)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
puppet-6.13.0 lib/puppet/http/service/report.rb
puppet-6.13.0-x86-mingw32 lib/puppet/http/service/report.rb
puppet-6.13.0-x64-mingw32 lib/puppet/http/service/report.rb
puppet-6.13.0-universal-darwin lib/puppet/http/service/report.rb