Recursive dependency checks in rspec-puppet

55 views
Skip to first unread message

Raphaël Pinson

unread,
Mar 11, 2015, 12:40:00 PM3/11/15
to puppe...@googlegroups.com
Hello,


I've been working on supporting recursive dependency checks in rspec-puppet today.


Unfortunately, I have had to scratch my head for quite a few things, and I'd love to some ideas from you, fellow puppet devs!

One ugly thing I've had to do is to canonicalize resources.

def canonicalize_resource(resource)
  resource_from_ref
(resource_ref(resource))
end


The problem I'm trying to solve is that when I have a resource reference, I need to retrieve the corresponding resource from the catalog. @catalogue.resource(ref) does that, but it sometimes returns a "partial" resource. For example, with file resources, the resource might have a "path" parameter, but resource[:path] returns nil.

In Puppet 3.7.4, I managed to "fix" this by canonicalizing the resource with @catalog.resource(resource.to_ref). I have no idea why that works actually.

However, in older versions of Puppet, I haven't found a way to retrieve this "full" version of the resource that can actually be passed to autorequire blocks safely.

Another problem, probaly more fundamental, is that I need to process resource dependencies recursively. I managed to do so with a double loop, but I suspect it should be doable using @catalogue.relationship_graph. However, I've spent quite a bit of time playing with all the methods I could think of, and couldn't figure out how to compute the relationship between two resources using the relationship_graph. I ended up using @catalogue.upstream_from_vertex, which doesn't work with Puppet 2.6.18 (see Travis CI build).


Do you have any pointers to improve this PR and make it work with all (supported) versions of Puppet?

Other remarks regarding the feature itself are also welcome of course!


Cheers,

Raphaël

Raphaël Pinson

unread,
Mar 17, 2015, 7:02:12 AM3/17/15
to puppe...@googlegroups.com
Anyone has an idea how to do that?
Reply all
Reply to author
Forward
0 new messages