Sha256: 3716b56b7e17527230d56b458800670c969f77c878bd1218728fd91b5221e1d5

Contents?: true

Size: 1.74 KB

Versions: 69

Compression:

Stored size: 1.74 KB

Contents

# Test whether a given class or definition is defined
Puppet::Parser::Functions::newfunction(:defined, :type => :rvalue, :doc => "Determine whether
  a given class or resource type is defined. This function can also determine whether a
  specific resource has been declared. Returns true or false. Accepts class names,
  type names, and resource references.

  The `defined` function checks both native and defined types, including types
  provided as plugins via modules. Types and classes are both checked using their names:

      defined(\"file\")
      defined(\"customtype\")
      defined(\"foo\")
      defined(\"foo::bar\")

  Resource declarations are checked using resource references, e.g.
  `defined( File['/tmp/myfile'] )`. Checking whether a given resource
  has been declared is, unfortunately, dependent on the parse order of
  the configuration, and the following code will not work:

      if defined(File['/tmp/foo']) {
          notify(\"This configuration includes the /tmp/foo file.\")
      }
      file {\"/tmp/foo\":
          ensure => present,
      }

  However, this order requirement refers to parse order only, and ordering of
  resources in the configuration graph (e.g. with `before` or `require`) does not
  affect the behavior of `defined`.") do |vals|
    result = false
    vals = [vals] unless vals.is_a?(Array)
    vals.each do |val|
      case val
      when String
        if Puppet::Type.type(val) or find_definition(val) or find_hostclass(val)
          result = true
          break
        end
      when Puppet::Resource
        if findresource(val.to_s)
          result = true
          break
        end
      else
        raise ArgumentError, "Invalid argument of type '#{val.class}' to 'defined'"
      end
    end
    result
end

Version data entries

69 entries across 69 versions & 4 rubygems

Version Path
puppet-2.7.14 lib/puppet/parser/functions/defined.rb
puppet-2.6.16 lib/puppet/parser/functions/defined.rb
puppet-2.7.13 lib/puppet/parser/functions/defined.rb
puppet-2.6.15 lib/puppet/parser/functions/defined.rb
supply_drop-0.9.0 examples/vendored-puppet/vendor/puppet-2.7.8/lib/puppet/parser/functions/defined.rb
supply_drop-0.8.1 examples/vendored-puppet/vendor/puppet-2.7.8/lib/puppet/parser/functions/defined.rb
supply_drop-0.8.0 examples/vendored-puppet/vendor/puppet-2.7.8/lib/puppet/parser/functions/defined.rb
puppet-2.7.12 lib/puppet/parser/functions/defined.rb
puppet-2.7.11 lib/puppet/parser/functions/defined.rb
puppet-2.6.14 lib/puppet/parser/functions/defined.rb
supply_drop-0.7.0 examples/vendored-puppet/vendor/puppet-2.7.8/lib/puppet/parser/functions/defined.rb
supply_drop-0.6.1 examples/vendored-puppet/vendor/puppet-2.7.8/lib/puppet/parser/functions/defined.rb
supply_drop-0.6.0 examples/vendored-puppet/vendor/puppet-2.7.8/lib/puppet/parser/functions/defined.rb
puppet-2.6.13 lib/puppet/parser/functions/defined.rb
puppet-2.7.9 lib/puppet/parser/functions/defined.rb
puppet-2.7.8 lib/puppet/parser/functions/defined.rb
puppet-2.7.6 lib/puppet/parser/functions/defined.rb
puppet-2.6.12 lib/puppet/parser/functions/defined.rb
puppet-2.7.5 lib/puppet/parser/functions/defined.rb
puppet-2.6.11 lib/puppet/parser/functions/defined.rb