Created
August 21, 2011 11:06
-
-
Save kwilczynski/1160472 to your computer and use it in GitHub Desktop.
Puppet "exists" function ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# exists.rb | |
# | |
# Copyright 2011 Puppet Labs Inc. | |
# Copyright 2011 Krzysztof Wilczynski | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
# | |
module Puppet::Parser::Functions | |
newfunction(:exists, :type => :rvalue, :doc => <<-EOS | |
Returns an boolean value if a given file and/or directory exists on Puppet Master. | |
Prototype: | |
exists(x) | |
Where x is a file or directory. | |
For example: | |
Given the following statements: | |
$a = '/etc/resolv.conf' | |
$b = '/this/does/not/exists' | |
notice exists($a) | |
notice exists($b) | |
The result will be as follows: | |
notice: Scope(Class[main]): true | |
notice: Scope(Class[main]): false | |
Note: | |
This function will ONLY be evaluated on the Puppet Master side and it | |
makes no sense to use it when checking whether a file and/or directory | |
exists on the client side. | |
EOS | |
) do |arguments| | |
# | |
# This is to ensure that whenever we call this function from within | |
# the Puppet manifest or alternatively form a template it will always | |
# do the right thing ... | |
# | |
arguments = arguments.shift if arguments.first.is_a?(Array) | |
raise Puppet::ParseError, "exists(): Wrong number of arguments " + | |
"given (#{arguments.size} for 1)" if arguments.size < 1 | |
file = arguments.shift | |
raise Puppet::ParseError, 'exists(): Requires a string type ' + | |
'to work with' unless file.is_a?(String) | |
# We want to be sure that we have the complete path ... | |
file = File.expand_path(file) | |
File.exists?(file) | |
end | |
end | |
# vim: set ts=2 sw=2 et : |
No problem! Glad you found it useful.
Grab better / newer version: https://github.com/kwilczynski/puppet-functions/blob/master/lib/puppet/parser/functions/exists.rb (edit: I think I its the same, but it is better to grab code from the repository anyway).
And have a look at https://github.com/kwilczynski/puppet-functions.
KW
Support for puppet:///
- https://gist.github.com/j4m3s/3307835
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
thx, that was I am looking for :)