Server IP : 172.67.158.161 / Your IP : 18.119.138.184 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/hiera/ |
Upload File : |
require 'forwardable' class Hiera class Scope extend Forwardable CALLING_CLASS = 'calling_class'.freeze CALLING_CLASS_PATH = 'calling_class_path'.freeze CALLING_MODULE = 'calling_module'.freeze MODULE_NAME = 'module_name'.freeze CALLING_KEYS = [CALLING_CLASS, CALLING_CLASS_PATH, CALLING_MODULE].freeze EMPTY_STRING = ''.freeze attr_reader :real def initialize(real) @real = real end def [](key) if key == CALLING_CLASS ans = find_hostclass(@real) elsif key == CALLING_CLASS_PATH ans = find_hostclass(@real).gsub(/::/, '/') elsif key == CALLING_MODULE ans = safe_lookupvar(MODULE_NAME) else ans = safe_lookupvar(key) end ans == EMPTY_STRING ? nil : ans end # This method is used to handle the throw of :undefined_variable since when # strict variables is not in effect, missing handling of the throw leads to # a more expensive code path. # def safe_lookupvar(key) reason = catch :undefined_variable do return @real.lookupvar(key) end case Puppet[:strict] when :off # do nothing when :warning Puppet.warn_once(Puppet::Parser::Scope::UNDEFINED_VARIABLES_KIND, _("Variable: %{name}") % { name: key }, _("Undefined variable '%{name}'; %{reason}") % { name: key, reason: reason } ) when :error raise ArgumentError, _("Undefined variable '%{name}'; %{reason}") % { name: key, reason: reason } end nil end private :safe_lookupvar def exist?(key) CALLING_KEYS.include?(key) || @real.exist?(key) end def include?(key) CALLING_KEYS.include?(key) || @real.include?(key) end def catalog @real.catalog end def resource @real.resource end def compiler @real.compiler end def find_hostclass(scope) if scope.source and scope.source.type == :hostclass return scope.source.name.downcase elsif scope.parent return find_hostclass(scope.parent) else return nil end end private :find_hostclass # This is needed for type conversion to work def_delegators :@real, :call_function end end