diff --git a/lib/puppet/http/service/compiler.rb b/lib/puppet/http/service/compiler.rb index ef0a2d26e9a..1ead5248e3f 100644 --- a/lib/puppet/http/service/compiler.rb +++ b/lib/puppet/http/service/compiler.rb @@ -119,6 +119,10 @@ def post_catalog(name, facts:, environment:, configured_environment: nil, check_ params: { environment: environment }, ) + if (compiler = response['X-Puppet-Compiler-Name']) + Puppet.notice("Catalog compiled by #{compiler}") + end + process_response(response) [response, deserialize(response, Puppet::Resource::Catalog)] diff --git a/spec/integration/application/agent_spec.rb b/spec/integration/application/agent_spec.rb index 026b7b1b4d3..b3f0365f1b5 100644 --- a/spec/integration/application/agent_spec.rb +++ b/spec/integration/application/agent_spec.rb @@ -15,6 +15,19 @@ let(:node) { Puppet::Node.new(Puppet[:certname], environment: 'production')} let(:formatter) { Puppet::Network::FormatHandler.format(:rich_data_json) } + context 'server identification' do + it 'emits a notice if the server sends the X-Puppet-Compiler-Name header' do + server.start_server do |port| + Puppet[:serverport] = port + expect { + agent.command_line.args << '--test' + agent.run + }.to exit_with(0) + .and output(%r{Notice: Catalog compiled by test-compiler-hostname}).to_stdout + end + end + end + context 'server_list' do it "uses the first server in the list" do Puppet[:server_list] = '127.0.0.1' diff --git a/spec/lib/puppet_spec/puppetserver.rb b/spec/lib/puppet_spec/puppetserver.rb index ef080e85618..be6e5cc0d67 100644 --- a/spec/lib/puppet_spec/puppetserver.rb +++ b/spec/lib/puppet_spec/puppetserver.rb @@ -19,6 +19,7 @@ def do_GET request, response class CatalogServlet < WEBrick::HTTPServlet::AbstractServlet def do_POST request, response response['Content-Type'] = 'application/json' + response['X-Puppet-Compiler-Name'] = 'test-compiler-hostname' catalog = Puppet::Resource::Catalog.new(Puppet[:certname], 'production') response.body = catalog.render(:json) end