Class: Puppet::FileServing::Mount::File Private

Inherits:
Puppet::FileServing::Mount show all
Defined in:
lib/puppet/file_serving/mount/file.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

API:

  • private

Instance Attribute Summary

Attributes inherited from Puppet::FileServing::Mount

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Puppet::FileServing::Mount

#initialize, #to_s

Methods included from Util::Logging

#clear_deprecation_warnings, #debug, #deprecation_warning, #format_backtrace, #format_exception, #get_deprecation_offender, #log_and_raise, #log_deprecations_to_file, #log_exception, #puppet_deprecation_warning, #send_log, setup_facter_logging!, #warn_once

Constructor Details

This class inherits a constructor from Puppet::FileServing::Mount

Class Method Details

.localmapObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



5
6
7
8
9
10
11
12
13
14
# File 'lib/puppet/file_serving/mount/file.rb', line 5

def self.localmap
  @localmap ||= {
    "h" => Puppet.runtime[:facter].value('networking.hostname'),
    "H" => [
             Puppet.runtime[:facter].value('networking.hostname'),
             Puppet.runtime[:facter].value('networking.domain')
           ].join("."),
    "d" => Puppet.runtime[:facter].value('networking.domain')
  }
end

Instance Method Details

#complete_path(relative_path, node) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:

API:

  • private



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/puppet/file_serving/mount/file.rb', line 16

def complete_path(relative_path, node)
  full_path = path(node)

  raise ArgumentError.new(_("Mounts without paths are not usable")) unless full_path

  # If there's no relative path name, then we're serving the mount itself.
  return full_path unless relative_path

  file = ::File.join(full_path, relative_path)

  if !(Puppet::FileSystem.exist?(file) or Puppet::FileSystem.symlink?(file))
    Puppet.info(_("File does not exist or is not accessible: %{file}") % { file: file })
    return nil
  end

  file
end

#find(short_file, request) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return an instance of the appropriate class.

API:

  • private



35
36
37
# File 'lib/puppet/file_serving/mount/file.rb', line 35

def find(short_file, request)
  complete_path(short_file, request.node)
end

#path(node = nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return the path as appropriate, expanding as necessary.

API:

  • private



40
41
42
43
44
45
46
# File 'lib/puppet/file_serving/mount/file.rb', line 40

def path(node = nil)
  if expandable?
    return expand(@path, node)
  else
    return @path
  end
end

#path=(path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Set the path.

API:

  • private



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/puppet/file_serving/mount/file.rb', line 49

def path=(path)
  # FIXME: For now, just don't validate paths with replacement
  # patterns in them.
  if path =~ /%./
    # Mark that we're expandable.
    @expandable = true
  else
    raise ArgumentError, _("%{path} does not exist or is not a directory") % { path: path } unless FileTest.directory?(path)
    raise ArgumentError, _("%{path} is not readable") % { path: path } unless FileTest.readable?(path)
    @expandable = false
  end
  @path = path
end

#search(path, request) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



63
64
65
66
67
# File 'lib/puppet/file_serving/mount/file.rb', line 63

def search(path, request)
  path = complete_path(path, request.node)
  return nil unless path
  [path]
end

#validateObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Verify our configuration is valid. This should really check to make sure at least someone will be allowed, but, eh.

Raises:

API:

  • private



71
72
73
# File 'lib/puppet/file_serving/mount/file.rb', line 71

def validate
  raise ArgumentError.new(_("Mounts without paths are not usable")) if @path.nil?
end