Class: Puppet::Parameter::Path

Inherits:
Puppet::Parameter show all
Defined in:
lib/puppet/parameter/path.rb

Overview

This specialized Puppet::Parameter handles validation and munging of paths. By default, a single path is accepted, and by calling Path.accept_arrays it is possible to allow an array of paths.

Constant Summary

Constants included from Util::Docs

Util::Docs::HEADER_LEVELS

Constants included from Util

Util::AbsolutePathPosix, Util::AbsolutePathWindows, Util::DEFAULT_POSIX_MODE, Util::DEFAULT_WINDOWS_MODE

Constants included from Util::POSIX

Util::POSIX::LOCALE_ENV_VARS, Util::POSIX::USER_ENV_VARS

Constants included from Util::SymbolicFileMode

Util::SymbolicFileMode::SetGIDBit, Util::SymbolicFileMode::SetUIDBit, Util::SymbolicFileMode::StickyBit, Util::SymbolicFileMode::SymbolicMode, Util::SymbolicFileMode::SymbolicSpecialToBit

Constants included from Util::Logging

Util::Logging::FILE_AND_LINE, Util::Logging::FILE_NO_LINE, Util::Logging::MM, Util::Logging::NO_FILE_LINE

Instance Attribute Summary

Attributes inherited from Puppet::Parameter

#name, #parent, #resource, #sensitive

Attributes included from Util::Docs

#doc, #nodoc

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Puppet::Parameter

aliasvalue, defaultto, desc, doc, #file, #format, format_value_for_display, #initialize, initvars, isnamevar, isnamevar?, #isnamevar?, isrequired, #line, #log, #metaparam?, #munge, munge, newvalues, nodefault, #noop, #path, #pathbuilder, #provider, proxymethods, #remove, #required?, required?, #tags, #to_s, unmunge, #unmunge, validate, #validate, #value, #value=, #version

Methods included from Util::Docs

#desc, #dochook, #doctable, #markdown_definitionlist, #markdown_header, #nodoc?, #pad, scrub

Methods included from Util

absolute_path?, benchmark, chuser, clear_environment, default_env, deterministic_rand, deterministic_rand_int, exit_on_fail, get_env, get_environment, logmethods, merge_environment, path_to_uri, pretty_backtrace, replace_file, safe_posix_fork, set_env, symbolizehash, thinmark, uri_encode, uri_query_encode, uri_to_path, which, withenv, withumask

Methods included from Util::POSIX

#get_posix_field, #gid, #idfield, #methodbyid, #methodbyname, #search_posix_field, #uid

Methods included from Util::SymbolicFileMode

#normalize_symbolic_mode, #symbolic_mode_to_int, #valid_symbolic_mode?

Methods included from Util::MethodHelper

#requiredopts, #set_options, #symbolize_options

Methods included from Util::Logging

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

Methods included from Util::Errors

#adderrorcontext, #devfail, #error_context, #exceptwrap, #fail

Constructor Details

This class inherits a constructor from Puppet::Parameter

Class Method Details

.accept_arrays(bool = true) ⇒ Object

Specifies whether multiple paths are accepted or not.



11
12
13
# File 'lib/puppet/parameter/path.rb', line 11

def self.accept_arrays(bool = true)
  @accept_arrays = !!bool
end

.arrays?Boolean

Returns:



14
15
16
# File 'lib/puppet/parameter/path.rb', line 14

def self.arrays?
  @accept_arrays
end

Instance Method Details

#unsafe_munge(paths) ⇒ String+

This is the default implementation of munge. If the concrete parameter defines a munge method, this default implementation will be overridden. This default implementation does not perform any munging, it just checks the one/many paths constraints. A derived implementation can perform this check as: ‘paths.is_a?(Array) and ! self.class.arrays?` and raise a Error.

Parameters:

  • paths (String, Array<String>)

    one of multiple paths

Returns:

  • (String, Array<String>)

    the given paths

Raises:

  • (Puppet::Error)

    if the given paths does not comply with the on/many paths rule.



51
52
53
54
55
56
# File 'lib/puppet/parameter/path.rb', line 51

def unsafe_munge(paths)
  if paths.is_a?(Array) and ! self.class.arrays? then
    fail _("%{name} only accepts a single path, not an array of paths") % { name: name }
  end
  paths
end

#unsafe_validate(paths) ⇒ void

This method returns an undefined value.

This is the default implementation of the validate method. It will be overridden if the validate option is used when defining the parameter.



39
40
41
# File 'lib/puppet/parameter/path.rb', line 39

def unsafe_validate(paths)
  validate_path(paths)
end

#validate_path(paths) ⇒ Array<String>

Performs validation of the given paths. If the concrete parameter defines a validation method, it may call this method to perform path validation.

Returns:

  • (Array<String>)

    the given paths

Raises:

  • (Puppet::Error)

    if this property is configured for single paths and an array is given

  • (Puppet::Error)

    if a path is not an absolute path



25
26
27
28
29
30
31
32
33
# File 'lib/puppet/parameter/path.rb', line 25

def validate_path(paths)
  if paths.is_a?(Array) and ! self.class.arrays? then
    fail _("%{name} only accepts a single path, not an array of paths") % { name: name }
  end

  fail(_("%{name} must be a fully qualified path") % { name: name }) unless Array(paths).all? {|path| absolute_path?(path)}

  paths
end