# File lib/puppet/file_serving/configuration.rb, line 14 def self.configuration synchronize do @configuration ||= new end end
# File lib/puppet/file_serving/configuration.rb, line 36 def initialize @mounts = {} @config_file = nil # We don't check to see if the file is modified the first time, # because we always want to parse at first. readconfig(false) end
Find the right mount. Does some shenanigans to support old-style module mounts.
# File lib/puppet/file_serving/configuration.rb, line 29 def find_mount(mount_name, environment) # Reparse the configuration if necessary. readconfig # This can be nil. mounts[mount_name] end
Is a given mount available?
# File lib/puppet/file_serving/configuration.rb, line 46 def mounted?(name) @mounts.include?(name) end
Split the path into the separate mount point and path.
# File lib/puppet/file_serving/configuration.rb, line 51 def split_path(request) # Reparse the configuration if necessary. readconfig mount_name, path = request.key.split(File::Separator, 2) raise(ArgumentError, "Cannot find file: Invalid mount '#{mount_name}'") unless mount_name =~ %r{^[-\w]+$} raise(ArgumentError, "Cannot find file: Invalid relative path '#{path}'") if path and path.split('/').include?('..') return nil unless mount = find_mount(mount_name, request.environment) if mount.name == "modules" and mount_name != "modules" # yay backward-compatibility path = "#{mount_name}/#{path}" end if path == "" path = nil elsif path # Remove any double slashes that might have occurred path = path.gsub(/\/+/, "/") end return mount, path end
# File lib/puppet/file_serving/configuration.rb, line 76 def umount(name) @mounts.delete(name) if @mounts.include? name end