Sha256: 29ef12a11be7e3a5d2d6a4e8b9183962af528bcb345eff9671d0b08afc9d2009

Contents?: true

Size: 1.13 KB

Versions: 21

Compression:

Stored size: 1.13 KB

Contents

require 'puppet/file_serving'

# This module is used to pick the appropriate terminus
# in file-serving indirections.  This is necessary because
# the terminus varies based on the URI asked for.
module Puppet::FileServing::TerminusSelector
  PROTOCOL_MAP = {"puppet" => :rest, "file" => :file}

  def select(request)
    # We rely on the request's parsing of the URI.

    # Short-circuit to :file if it's a fully-qualified path or specifies a 'file' protocol.
    return PROTOCOL_MAP["file"] if Puppet::Util.absolute_path?(request.key)
    return PROTOCOL_MAP["file"] if request.protocol == "file"

    # We're heading over the wire the protocol is 'puppet' and we've got a server name or we're not named 'apply' or 'puppet'
    if request.protocol == "puppet" and (request.server or !["puppet","apply"].include?(Puppet.settings[:name]))
      return PROTOCOL_MAP["puppet"]
    end

    if request.protocol and PROTOCOL_MAP[request.protocol].nil?
      raise(ArgumentError, "URI protocol '#{request.protocol}' is not currently supported for file serving")
    end

    # If we're still here, we're using the file_server or modules.
    :file_server
  end
end

Version data entries

21 entries across 21 versions & 3 rubygems

Version Path
puppet-parse-0.1.4 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-parse-0.1.3 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-parse-0.1.2 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-parse-0.1.1 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-2.7.26 lib/puppet/file_serving/terminus_selector.rb
puppet-2.7.25 lib/puppet/file_serving/terminus_selector.rb
puppet-2.7.24 lib/puppet/file_serving/terminus_selector.rb
puppet-2.7.23 lib/puppet/file_serving/terminus_selector.rb
puppet-2.7.22 lib/puppet/file_serving/terminus_selector.rb
puppet-parse-0.1.0 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-parse-0.0.6 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-2.7.21 lib/puppet/file_serving/terminus_selector.rb
puppet-parse-0.0.5 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-parse-0.0.4 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-parse-0.0.2 lib/vendor/puppet/file_serving/terminus_selector.rb
puppet-2.7.20 lib/puppet/file_serving/terminus_selector.rb
puppet-2.7.20.rc1 lib/puppet/file_serving/terminus_selector.rb
librarian-puppet-0.9.4 vendor/gems/ruby/1.8/gems/puppet-2.7.18/lib/puppet/file_serving/terminus_selector.rb
puppet-2.7.19 lib/puppet/file_serving/terminus_selector.rb
librarian-puppet-0.9.3 vendor/gems/ruby/1.8/gems/puppet-2.7.18/lib/puppet/file_serving/terminus_selector.rb