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.
