puppetlabs/puppetlabs-stdlib — pull request #102 by wcooley (2012-11-07 07:21:04+00:00)
Title: Add predicate functions for interface facts

https://projects.puppetlabs.com/issues/13974

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_` and `network_`
(respectively) having the requested ``.

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 `_`
looking for ``.

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.