This function is similar to a coalesce function in SQL in that it will
return
the first value in a list of values that is not undefined or an empty
string
(two things in Puppet that will return a boolean false value).
Typically,
this function is used to check for a value in the Puppet
Dashboard/Enterprise
Console, and failover to a default value like the following:
$real_jenkins_version = pick($::jenkins_version, '1.449')
The value of $real_jenkins_version will first look for a top-scope
variable
called 'jenkins_version' (note that parameters set in the Puppet
Dashboard/
Enterprise Console are brought into Puppet as top-scope variables), and,
failing that, will use a default value of 1.449.
If one wishes to test if a host has a particular IP address (such as a floating
virtual address) or has an interface on a particular network (such as a
secondary management network), the facts that provide this information are
difficult to use within Puppet.
This patch addresses these needs by implementing functions
‘has_ip_address(value)’ and ‘has_ip_network(value)’. These functions look
through all interfaces for ipaddress_<interface> and network_<interface>
(respectively) having the requested <value>.
These functions are implemented on top of a lower-level predicate
function, ‘has_interface_with(kind, value)’, which iterates through the
interfaces in the ‘interfaces’ fact and checks the facts <kind>_<interface>
looking for <value>.
Additionally, the existence of a particular named interface can be checked for
by calling with only a single argument: has_interface_with(interface).
A Boolean is returned in all cases.
This reverts commit 9e8c60a8b7.
This was an error on my part. 3.1.x descends from 3.0.x _and_ 2.5.x, but 3.0.x does
not descend from 2.5.x. I should not have merged 2.5.x into 3.0.x,
instead I should have merged 2.5.x into 3.1.x skipping over the 3.0.x
merge up.
I'm slowly starting to understand the implications of semver on our
branching strategy... =)
This reverts commit c8c7afc7a0, reversing
changes made to 03ec16e291.
This was a mistake on my part. 2.5 is a minor release and minor
releases should never be merged into patch level branches. 2.5.x should
have been merged into 3.1.x instead.
Without this patch stdlib tests fail against Facter 2.x and master but
not 1.6.x.
This patch fixes the problem by initializing the example group
differently depending on the version of Facter integrating into the
system. The adjusted methods are:
1.x - Facter.collection.loader.load
2.x - Facter.collection.load
The collection actually implements the load method in both version, it's
simply marked as private in 1.x.
* 3.1.x:
Update Modulefile, CHANGELOG for 3.1.0
Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'"""
Update Modulefile, CHANGELOG for 2.5.0
Explicitly load functions used by ensure_resource
re-formatting
Add better docs about duplicate resource failures
Handle undef for parameter argument
Add function ensure_resource and defined_with_params
Revert "Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x""
Revert "Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x""
Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x"
Prevent undefined method `split' for nil:NilClass with pe_foo_version facts
(maint) Clear all facts before each example
Add spec tests for pe_version facts
Add PE facts to stdlib
Fix some logical inconsistencies in README
(#14422) Update README to include the bug tracker URL.
Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'""
* 2.5.x:
Update Modulefile, CHANGELOG for 2.5.0
Explicitly load functions used by ensure_resource
re-formatting
Add better docs about duplicate resource failures
Handle undef for parameter argument
Add function ensure_resource and defined_with_params
Revert "Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x""
Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x"
Prevent undefined method `split' for nil:NilClass with pe_foo_version facts
(maint) Clear all facts before each example
Add spec tests for pe_version facts
Add PE facts to stdlib
Conflicts:
CHANGELOG
Modulefile
spec/spec_helper.rb
This reverts commit 8fc00ea5b6.
I really wish we could get this right.
Without this patch there is no branch that contains backwards-comaptible
new functionality relative to the current 3.0.1. There are only
branches that contain backwards-incompatible functionality relative to
3.0.1.
This is a problem because I need to do a release of stdlib that contains
backwards compatible facts but does not contain any breaking changes.
This patch fixes the problem by establishing the 3.1.x branch. This
branch will then revert the backwards incompatible changes from the
3.1.x branch and revert the revets in the 4.x and master branches.
I'll review our merge process, but it seems wrong that there is no place
to separate out incompatible from compatible changes when working beyond
the most recent patch release.
* 2.5.x:
Explicitly load functions used by ensure_resource
re-formatting
Add better docs about duplicate resource failures
Handle undef for parameter argument
Add function ensure_resource and defined_with_params
* maint/2.5.x/pick_compatible_new_functionality:
Explicitly load functions used by ensure_resource
re-formatting
Add better docs about duplicate resource failures
Handle undef for parameter argument
Add function ensure_resource and defined_with_params
The ensure_resource function actually calls two
other functions, create_resources and defined_with_param.
When calling Puppet functions from Ruby, you sometimes have
to load the functions manually if they have not been called
before.
This commit explicitly loads the functions that ensure_resource
depends on from within the function.
* maint/2.5.x/pick_pr86_ensure_resource:
re-formatting
Add better docs about duplicate resource failures
Handle undef for parameter argument
Add function ensure_resource and defined_with_params
This commit adds better inline documentation
explaining how replicate resource definitions can
occur if the resource exists and does not have
matching parameters.