Class: Puppet::FileServing::Configuration

Inherits:
Object
  • Object
show all
Extended by:
MonitorMixin
Defined in:
lib/vendor/puppet/file_serving/configuration.rb

Defined Under Namespace

Classes: Parser

Constant Summary collapse

Mount =
Puppet::FileServing::Mount

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



46
47
48
49
50
51
52
53
# File 'lib/vendor/puppet/file_serving/configuration.rb', line 46

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

Instance Attribute Details

#mountsObject (readonly)

Returns the value of attribute mounts.



24
25
26
# File 'lib/vendor/puppet/file_serving/configuration.rb', line 24

def mounts
  @mounts
end

Class Method Details

.configurationObject



14
15
16
17
18
# File 'lib/vendor/puppet/file_serving/configuration.rb', line 14

def self.configuration
  synchronize do
    @configuration ||= new
  end
end

Instance Method Details

#find_mount(mount_name, environment) ⇒ Object

Find the right mount. Does some shenanigans to support old-style module mounts.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/vendor/puppet/file_serving/configuration.rb', line 29

def find_mount(mount_name, environment)
  # Reparse the configuration if necessary.
  readconfig

  if mount = mounts[mount_name]
    return mount
  end

  if environment.module(mount_name)
    Puppet::Util::Warnings.notice_once "DEPRECATION NOTICE: Files found in modules without specifying 'modules' in file path will be deprecated in the next major release.  Please fix module '#{mount_name}' when no 0.24.x clients are present"
    return mounts["modules"]
  end

  # This can be nil.
  mounts[mount_name]
end

#mounted?(name) ⇒ Boolean

Is a given mount available?

Returns:

  • (Boolean)


56
57
58
# File 'lib/vendor/puppet/file_serving/configuration.rb', line 56

def mounted?(name)
  @mounts.include?(name)
end

#split_path(request) ⇒ Object

Split the path into the separate mount point and path.

Raises:

  • (ArgumentError)


61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/vendor/puppet/file_serving/configuration.rb', line 61

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

#umount(name) ⇒ Object



86
87
88
# File 'lib/vendor/puppet/file_serving/configuration.rb', line 86

def umount(name)
  @mounts.delete(name) if @mounts.include? name
end