summaryrefslogtreecommitdiff
path: root/lib/puppet
AgeCommit message (Collapse)Author
2017-07-03Revert "Allow use of fact() on other hashes"Reid Vandewiele
This reverts commit 409a974095a3f5b637e091494b5d14b451c5de78. After thinking about this, use case, and function naming, I think it's probably best for now to keep things simple and let `fact()` be single-purpose for looking up facts with no potentially confusing extensions. The only use case where the name makes sense is where it's being used on the `$facts` hash, and I think we'd rather in that circumstance promote the raw use of `fact()`.
2017-06-30(FACT-932) Allow use of fact() on other hashesReid Vandewiele
Because sometimes people want to use an alternative data set, but treat it like it's a set of facts.
2017-06-30(FACT-932) Add new function, fact()Reid Vandewiele
The fact() function allows dot-notation reference to facts. It is an alternative to using $facts directly with array-indexing. Array-indexing is often onerous to use since it doesn't align with how structured facts are accessed elsewhere in the ecosystem and if any element in a multi-step path doesn't exist, array indexing can cause a compilation failure. Example usage: fact('os.family')
2017-06-14(MODULES-5095) Workaround for PUP-7650Thomas Hallgren
This commit adds a simple workaround for the problem described in PUP-7650. The workaround is harmless and can remain in place regardless of if the fix for PUP-7650 is in place or not.
2017-05-09Fix issue where the following causes obscure catalog compilation errors:Alex Dacre
``` file { '/tmp/somefile': ensure => 'file', } File['/tmp/somefile'] -> Package <| |> ensure_packages($somearray) ``` If $somearray is undefined or one of the elements contains an empty string, an error like the following is thrown: Could not find resource 'Package[]' for relationship from 'File[/tmp/somefile]' on node $::fqdn
2017-05-09(PE-20308) Also fix defined type strings & referencesHunter Haugen
2017-04-26(PE-20308) Correct boundary for 4.5 vs 4.6Hunter Haugen
2017-04-25(PE-20308) Pass a literal type and not a string to findresourceHunter Haugen
- `defined_with_params` calls `findresource(reference.to_s)` - `findresource` is https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/parser/compiler.rb#L407 and points to https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/resource/catalog.rb#L352 - This calls `Puppet::Resource.new` with the type https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/resource/catalog.rb#L366 - This ends up calling `resource_type` via https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/resource.rb#L317-L319 and that ends up declaring the type via the autoloader api at https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/resource.rb#L390 - But why does the autoloader API fail to find it in the current environment? - Okay, so when the autoloader is trying to find the type, it uses the typeloader to look it up in the current environment https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/metatype/manager.rb#L171 - this calls `get_file` and `mark_loaded` https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/util/autoload.rb#L64-L67 Suggested workaround is to pass a literal type instead of a string to `findresource` to fix in stdlib, and also to fix loading/requiring of type in core puppet. This seems to affect more recent versions of puppet, so fallback to original behavior on pre-4.5
2017-04-18Ruby 1.8 doesn't support open_argsMathieu Parent
Regression from #726
2017-03-21Merge pull request #718 from sspreitzer/master_globWilson McCoubrey
Add glob function
2017-03-15(FM-6051) Adds comments to warn for UTF8 incompatibilityHelen Campbell
2017-03-14Merge pull request #736 from HelenCampbell/lengthfunctDavid Schmitt
Addition of new length function
2017-03-14Addition of new length functionHelen Campbell
2017-03-13Merge pull request #729 from eputnam/i18n_prepGlenn Sarti
(MODULES-4473) join strings for i18n parser
2017-03-13(#FM-6068) allow file encoding to be specified (#726)Geoff Williams
* (#FM-6068) allow file encoding to be specified Add a new parameter `encoding` to allow non UTF-8 files to specify a file encoding. This prevents receiving the error message "invalid byte sequence in UTF-8" when special characters that are not UTF-8 encoded appear in the input stream, such as the copyright symbol. * (#FM-6068) allow file encoding to be specified Added docs and tests as requested
2017-03-10Should only try to aplpy the resource if it not definedmbakerbp
2017-03-01(MODULES-4473) join strings for i18n parserEric Putnam
This commit joins all strings that are split over two lines with a plus, backslash, or double less than so that our magical i18n parser can wave over the module and mark every ruby string with our i18n function.
2017-02-05Add glob functionSascha Spreitzer
2016-12-15Merge pull request #640 from hunner/add_pryBryan Jen
Add pry() function from hunner-pry
2016-12-13Merge pull request #700 from petems/MODULES-4188-uuid_functionBryan Jen
(MODULES-4188) Add UUID generation function
2016-12-09Merge pull request #697 from ↵David Schmitt
HAIL9000/issue/master/MODULES-3829_add_tests_for_ensure_resources (MODULES-3829) Add tests for ensure_resources
2016-12-09(MODULES-3829) Make ensure_packages work with < 2.0Hailee Kenney
Prior to this commit, if a hash was passed in as an argument to the ensure_packages function a method of hash duplication would be used that is not supported with versions of ruby older than 2.0. In order to ensure the method is compatible with older ruby versions, switch to a different method of duplication. Additionally add tests to prevent further regressions.
2016-12-09(MODULES-4188) Add FQDN UUID generation functionPeter Souter
* Generates UUID based on a given FQDN string and the DNS namespace (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
2016-12-08Add pry() function from hunner-pryHunter Haugen
2016-12-01Indicate that the type function is preferred (#695)Nick Walker
Prior to this commit, users coming to the type_of function would not realize that the type function in puppet does the same thing and is preferred over type_of. After this commit, we have a comment indicating the above.
2016-11-29Merge pull request #693 from HelenCampbell/moreErrorDetailDavid Schmitt
(MODULES-3393) Deprecation - Use puppet stacktrace if available
2016-11-27Remove rvalue declaration from v3 deprecation() functionDavid Schmitt
Without this, some uses of this function do not work in puppet3. e.g. if $include_src != undef { deprecation('apt $include_src', "please use \$include => { 'src' => ${include_src} } instead") } causes Function 'deprecation' must be the value of a statement on puppet 3.8.7.
2016-11-24Deprecation - Use puppet stacktrace if availableHelen Campbell
A previous PR (#685) was raised on this issue, however once it was merged it was discovered that Puppet 3 with future parser enabled was calling the Puppet 4 version of the deprecation function. The Puppet stacktrace is not available until Puppet 4.6, so this was breaking existing setups. The solution was to check is the stacktrace was defined, and if it was to use it as part of the message output.
2016-11-21Revert "Call site output for deprecation warnings"Bryan Jen
2016-11-21Call site display for deprecation warningsHelen Campbell
2016-11-10Merge pull request #632 from MiamiOH/masterWilson McCoubrey
Handle array values in join_keys_to_values function
2016-11-08(MODULES-3829) Use .dup to duplicate classes for modification.Simon Beirnaert
This function otherwise fails during `puppet preview` on Puppet 3.8.X systems.
2016-10-12(MODULES-3969) Update getvar to work on ruby 1.8.7David Schmitt
2016-10-12(MODULES-3962) Rework v4 function shims to work on puppet 3.7 and 4.0.0David Schmitt
This is a workaround for PUP-4438 (fixed in https://github.com/puppetlabs/puppet/commit/e01c4dc924cd963ff6630008a5200fc6a2023b08, 4.1.0, 3.8.1). It works by manually passing through the scope, instead of relying on the InternalFunction class.
2016-10-12(MODULES-3961) emit more deprecation warningsDavid Schmitt
This now emits one deprecation warning for each function used (but not for each call-site). Prior to this, only a single deprecation warning would have been triggered, potentially misleading users. Additionally this adds v4 deprecation stubs for the functions that were missed.
2016-10-09Update deprecation() so warnings can be disabled for CIDavid Schmitt
2016-10-08Revert "Addition of logging with file and line numbers"David Schmitt
This reverts commit b63862ff43194194f7428739a32cfe13bad1e7ed, as it would only show the irrelevant first entry of the ruby stack trace. The puppetserver log does contain the full trace information, or you can use --strict=error to cause a hard failure when hitting a deprecation. # Conflicts: # lib/puppet/functions/validate_legacy.rb
2016-10-08Ignore :undefined_variable "reason" in getvarMaksym Melnychok
`catch` returns value of second argument to `throw`, which until 860a2761f334c964068038b3ef6853f08beb1df5 was `nil`, but now is non-falsey reason for error. short-circuit using return and eval to nil if `throw` was caught.
2016-10-07(Maint) add missing validate_slength deprecationDavid Schmitt
2016-10-07(FM-5703, PUP-6717) Remove the dynamic deprecation_genDavid Schmitt
This was not working when the puppet master did not have the newest stdlib version in its environment.
2016-10-06(MODULES-3590) Fix match_for_absence parameterHailee Kenney
Prior to this commit, due to a bug in the exists? method in the file_line provider, match_for_absence didn't work as described (or at all really). Update the exists? logic so that match_for_absence works as described. Additionally add a unit test to prevent regressions and update the documentation for the parameter to reflect the fact that it is ignored when `ensure => present`.
2016-10-04(MODULES-3933) Fix getparam for 'false' valuesDavid Schmitt
This is the idiomatic version of #634, and also addresses the test failures. Original-Fix-By: Michiel Brandenburg <michiel@silverstreet.com>
2016-10-04Permit undef passed as `nil` to validate_stringDominic Cleal
When validate_string is called via the Puppet 4 deprecation wrappers from deprecation_gen (introduced in 970852d), `undef` is passed as `nil` where it was previously passed as `''` from the Puppet 3-style function API. This change explicitly permits a `nil` value in validate_string, and adds a test case to `is_string` which also accepts the same. Fixes test failures in apt, concat etc: Error while evaluating a Function Call, nil is not a string. It looks to be a NilClass at apt/manifests/source.pp:23:3 [..] # ./spec/fixtures/modules/stdlib/lib/puppet/parser/functions/validate_string.rb:34:in `block (2 levels) in <module:Functions>' # ./spec/fixtures/modules/stdlib/lib/puppet/parser/functions/validate_string.rb:32:in `each' # ./spec/fixtures/modules/stdlib/lib/puppet/parser/functions/validate_string.rb:32:in `block in <module:Functions>' # puppet-4.7.0/lib/puppet/parser/functions.rb:174:in `block (2 levels) in newfunction' # puppet-4.7.0/lib/puppet/util/profiler/around_profiler.rb:58:in `profile' # puppet-4.7.0/lib/puppet/util/profiler.rb:51:in `profile' # puppet-4.7.0/lib/puppet/parser/functions.rb:167:in `block in newfunction' # ./spec/fixtures/modules/stdlib/lib/puppet_x/puppetlabs/stdlib/deprecation_gen.rb:13:in `block (2 levels) in deprecation_gen'
2016-10-03Addition of Puppet 4 functionsHelen Campbell
2016-09-26Remove duplicate deprecation warningsHelen Campbell
2016-09-26Merge pull request #656 from HelenCampbell/hashFupdateHunter Haugen
Add deprecation warnings to remaining validates
2016-09-26Add deprecation warnings to remaining validatesHelen Campbell
2016-09-21Revert "Ensure validate functions use Puppet 4 deprecation"Helen
2016-09-21Merge pull request #654 from HelenCampbell/puppet4DepDavid Schmitt
Ensure validate functions use Puppet 4 deprecation
2016-09-21Ensure validate functions use Puppet 4 deprecationHelen Campbell