From 29844cac2019fafa74fab56eb682a8363ec17d17 Mon Sep 17 00:00:00 2001 From: Mark Dechiaro Date: Thu, 12 Mar 2026 10:08:29 -0500 Subject: [PATCH] Fix filebucket REST terminus to support request.server The REST terminus called session.route_to(:puppet) with no URL, so route_to always resolved via the normal resolver chain and sent filebucket traffic to Puppet[:server], silently ignoring the server value encoded in the filebucket:// URI. Co-Authored-By: Claude Closes: #367 --- lib/puppet/indirector/file_bucket_file/rest.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/puppet/indirector/file_bucket_file/rest.rb b/lib/puppet/indirector/file_bucket_file/rest.rb index ec33c651c1..236d0b0a4b 100644 --- a/lib/puppet/indirector/file_bucket_file/rest.rb +++ b/lib/puppet/indirector/file_bucket_file/rest.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require 'uri' require_relative '../../../puppet/indirector/rest' require_relative '../../../puppet/file_bucket/file' @@ -9,7 +10,8 @@ class Rest < Puppet::Indirector::REST def head(request) session = Puppet.lookup(:http_session) - api = session.route_to(:puppet) + url = URI::HTTPS.build(host: request.server, port: request.port) if request.server + api = session.route_to(:puppet, url: url) api.head_filebucket_file( request.key, environment: request.environment.to_s, @@ -23,7 +25,8 @@ def head(request) def find(request) session = Puppet.lookup(:http_session) - api = session.route_to(:puppet) + url = URI::HTTPS.build(host: request.server, port: request.port) if request.server + api = session.route_to(:puppet, url: url) _, filebucket_file = api.get_filebucket_file( request.key, environment: request.environment.to_s, @@ -40,7 +43,8 @@ def find(request) def save(request) session = Puppet.lookup(:http_session) - api = session.route_to(:puppet) + url = URI::HTTPS.build(host: request.server, port: request.port) if request.server + api = session.route_to(:puppet, url: url) api.put_filebucket_file( request.key, body: request.instance.render,