Nodes graphs

23 views
Skip to first unread message

Jean Baptiste FAVRE

unread,
Apr 3, 2011, 1:10:55 PM4/3/11
to puppet...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,
Working further with puppet, I need to be able to graph both nodes and
class dependencies to be able to diagnose issues and/or redundancies.

Currently, activating graph allows me to get ressources/dependencies
graphs per client.

But I would like to highlight nodes dependenxies as well.
Is there any way to get a global "node-centric" graph ?
If yes, how: server-side, client-side, both ?

For example, my nodes.pp look like:
node N_default{
include C_a;
include C_b;
}
node N_mynode inherits N_default {
include C_c;
}
node N_mynode2 inherits N_mynode1 {
include C_d;
}
node N_mynode3 inherits N_default {
include C_e;
}

Here, I would like to get .dot file as this:

digraph Nodes {
label = "Nodes"
"N_default" [
fontsize = 8,
label = "N_default"
]
"N_mynode" [
fontsize = 8,
label = "N_mynode"
]
"N_mynode2" [
fontsize = 8,
label = "N_mynode2"
]
"N_mynode3" [
fontsize = 8,
label = "N_mynode3"
]
"C_a" [
fontsize = 8,
label = "C_a"
]
"C_b" [
fontsize = 8,
label = "C_b"
]
"C_c" [
fontsize = 8,
label = "C_c"
]
"C_d" [
fontsize = 8,
label = "C_d"
]
"C_e" [
fontsize = 8,
label = "C_e"
]

"N_default" -> "N_mynode" [
fontsize = 8,
color = red
]
"N_mynode" -> "N_mynode2" [
fontsize = 8,
color = red
]
"N_default" -> "N_mynode3" [
fontsize = 8,
color = red
]
"C_a" -> "N_default" [
fontsize = 8,
color = blue
]
"C_b" -> "N_default" [
fontsize = 8,
color = blue
]
"C_c" -> "N_mynode" [
fontsize = 8,
color = blue
]
"C_d" -> "N_mynode2" [
fontsize = 8,
color = blue
]
"C_e" -> "N_mynode3" [
fontsize = 8,
color = blue
]
}

Regards,
JB
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2Yqh4ACgkQM2eZoKJfKd1S3gCdEE0b2Hgi1TcXykHLeyZBH0DH
JvkAoKXhNJU4BxDbiD/j0/xJ0VIjX2ff
=q+xH
-----END PGP SIGNATURE-----

donavan

unread,
Apr 3, 2011, 11:26:10 PM4/3/11
to Puppet Users
On Apr 3, 10:10 am, Jean Baptiste FAVRE
<jean.baptiste.fa...@gmail.com> wrote:
> But I would like to highlight nodes dependenxies as well.
> Is there any way to get a global "node-centric" graph ?
> If yes, how: server-side, client-side, both ?

You might want to try this on puppet-dev. As far as I recall there's
no network graph representing node interactions. I think this is on
the ToDo list.

Jean Baptiste Favre

unread,
Apr 4, 2011, 3:17:25 AM4/4/11
to puppet...@googlegroups.com
Hello,

Le 04/04/11 05:26, donavan a �crit :

Thanks for you answer, will try on puppet-dev.

Regard,
JB

jcbollinger

unread,
Apr 4, 2011, 9:27:00 AM4/4/11
to Puppet Users


On Apr 3, 12:10 pm, Jean Baptiste FAVRE
<jean.baptiste.fa...@gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hello,
> Working further with puppet, I need to be able to graph both nodes and
> class dependencies to be able to diagnose issues and/or redundancies.
>
> Currently, activating graph allows me to get ressources/dependencies
> graphs per client.
>
> But I would like to highlight nodes dependenxies as well.
> Is there any way to get a global "node-centric" graph ?
> If yes, how: server-side, client-side, both ?

I strongly recommend that you approach this problem in a different
way: flatten your node graph. Deep node inheritance hierarchies are
likely to cause you pain, largely because nodes sets do not typically
admit a single, definitive taxonomy. I recommend at most two levels,
including the level of your default node, if any. Your Puppet
manifest development will be more productively directed, and as a
bonus, with a flat node hierarchy you have little need for a node
graph.

I observe also that you don't need dynamic graphing of node
dependencies anyway, because all the inheritance tree is declared
statically, and does not vary by node. Nevertheless, you should be
able to use the resource graph to flag which node declaration(s) are
being evaluated:

node N_default{
include C_a;
include C_b;
notify { "node N_default": message => "I am an N_default" }
}


node N_mynode inherits N_default {
include C_c;
notify { "node N_mynode": message => "I am an N_mynode" }
}

This will produce messages in the client logs (possibly useful for
debugging), but more importantly, it should introduce top-level, node-
type-specific resources into your resource graph.


John
Reply all
Reply to author
Forward
0 new messages