On 23/03/16 21:04, Hunter Haugen wrote:
Given the resource you want to apply this pattern to, it can be turned
into a one-liner with a collector:

file { '/tmp/something':
   ensure => file,
}
File['/tmp/something'] ~> Service <| title == 'apache2' |>

This means that if there is a service with a title of apache2 EVER added
to the catalog, it'll be refreshed on file changes. If the service
doesn't exist, then the dependency does nothing.

Now, this isn't exactly what you asked since you wanted the variable
$services_to_notify and didn't say what you're going to do with it, but
I assume this is what you want? Because collectors are not parse-order
specific, you can't do variable assignments like $services_to_notify =
Service <| title == 'apache2' |> (because variables are evaluated in
parse order and collectors are not).

If you really want to make a function that searches the catalog and
returns references, it can be done with something like
`scope.catalog.resource('Service[apache2]')` inside the function I
believe, though that may not be the exact call.



That route will make you discover things that you cannot do. Functions are called in "evaluation order", and all defaults, collections, overrides have not yet been applied to resources at the point where a function is called.

IMO you will be better off by using collectors or rethink the design.

- henrik


--

Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/

--
You received this message because you are subscribed to the Google Groups "Puppet 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/56F307E2.2090903%40puppetlabs.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to