I prefer the each lambda over ensure_resource and create_resource. my 5pc.
> On 20. Mar 2018, at 23:21, jcbollinger <[email protected]> wrote: > > On Tuesday, October 17, 2017 at 7:59:16 AM UTC-5, jcbollinger wrote: > > Nothing has changed with `ensure_resource()`. The problem is not its > implementation details, but rather the nature of the usage modes the function > is designed to support. The whole idea of it is flawed. > > > Funny story: > > I have recently been working with an "approved" Forge module, which will go > unnamed. It has a long history, and overall is of high quality. But it > happens to use ensure_resource(), and sure enough, that bit me in the ass: it > is the cause of a module bug that crops up under relatively unusual > circumstances. Then when I tried to fix the bug, ensure_resource() did it > again. > > The failure mode isn't even among those I usually harp on. Maybe the > function's behavior has changed over time, or maybe I never knew this about > it, but in Stdlib 4, the function only protects against declaration of > identical resources -- it will happily generate a resource with the same > title as another that has already been declared, as long as there is a > difference between their declared parameters. This of course elicits a > duplicate resource declaration error from Puppet (and this is intentional: > function's docs disclose it). > > And here's the kicker: after my attempted bugfix, the duplicate declarations > in fact are identical, at least as expressed to ensure_resource(). They are > rendered non-identical externally by application of a resource override. > Apparently, the override is applied either together with application of the > first ensure_resource() call in some way that messes up the resource > comparison in the second, or between the effects of the first call and the > effects of the second call. Maybe that's a bug. > > To be sure, I would rather have the function fail loudly than break quietly, > but I would even more have liked to have a module that doesn't depend on > ensure_resource() in the first place. > > > John > "ensure_resource() is evil" > > > -- > 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/46001944-4feb-4721-bf6c-b2a1b9daa9b7%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- 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/4F316B53-EF8C-459E-A5A5-F5D14C86CDBE%40gmail.com. For more options, visit https://groups.google.com/d/optout.
