The Puppet Labs Issue Tracker has Moved: https://tickets.puppetlabs.com
https://tickets.puppetlabs.com. See the following page for information on filing tickets with JIRA:
The Catalog should include both dependency and containment edges
|Assignee:||eric sorenson||% Done:|
|Affected Puppet version:||2.7.19||Branch:|
Ticket tracking is now hosted in JIRA: https://tickets.puppetlabs.com
Right now, the catalogs sent from the server to the client include only containment edges, and the client has to go through some work internally to add dependency edges. In the course of doing so, it removes all of the containment edges. The current mechanism for removing them involves the infamous ‘whit’, which causes plenty of problems, including the need for the ‘anchor’ pattern.
If we can refactor the catalog creation on the server, and graph sorting on the client, so that we can have both kinds of edges in the graph at the same time, we can get rid of all of the code around the relationship graph, along with the need for whits, and all of the complicated graph stuff involving them, plus the need for the anchor pattern.
This will also make integration with other tools, like PuppetDB, easier.
Note that the “hard” parts about doing this work are twofold:
Correctly descending dependencies in priority to containment edges. The edge types aren’t equal and can’t be treated as such.
Detecting dependency cycles.
It’s that last bit that blocked me last time I tried to do this. I have an attempt at this from a long time ago:
But I couldn’t get cycle detection working, so I couldn’t get it merged.