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

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

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



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

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

Raises:

  • (ArgumentError)


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

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

  raise ArgumentError, _("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)

  unless 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

Return an instance of the appropriate class.



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

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

#path(node = nil) ⇒ Object

Return the path as appropriate, expanding as necessary.



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

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

#path=(path) ⇒ Object

Set the path.



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

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



65
66
67
68
69
70
# File 'lib/puppet/file_serving/mount/file.rb', line 65

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

  [path]
end

#validateObject

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

Raises:

  • (ArgumentError)


74
75
76
# File 'lib/puppet/file_serving/mount/file.rb', line 74

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