Problem matching nodes with regular expressions and inheritance

619 views
Skip to first unread message

David Campos

unread,
May 10, 2012, 1:54:11 PM5/10/12
to puppet...@googlegroups.com
Hello all,

I am having a strange problem matching a hierarchy of nodes like the following one:

node basenode  {
  ...
}
node /^diaspora(?:-\d+)?$/ inherits basenode {
  ...
}
node /^diaspora15(?:-\d+)?$/ inherits diaspora {
  ...
}

When I try to instantiate a node that should match the last one (for example diaspora15 or diaspora15-4433) I find that puppet matches that node but is not able to match the parent node. From my knowledge of regular expressions (and checking though rubular), diaspora matches my first regular expression so the inheritance should be complete.

I get the following message:

Could not find parent resource type 'diaspora' of type node in production at /tmp/vagrant-puppet/manifests/diaspora.pp:14 on node diaspora15.scytl.net

Also, when I instantiate a node named diaspora that works..

Any idea of what I am doing wrong? I think that puppet allows that kind of matching.

jcbollinger

unread,
May 10, 2012, 6:15:07 PM5/10/12
to Puppet Users


On May 10, 12:54 pm, David Campos <noymn.the.archan...@gmail.com>
wrote:
Evidently, you are mistaken. Puppet is not matching the parent node
name against your regex nodes; instead it is looking for a node
definition bearing exactly that name. Frankly, I don't find that
surprising.

You should be able to resolve the problem with a slight juggling of
your node definitions:

node basenode {
...
}

node diaspora inherits basenode {
...
}

node /^diaspora-\d+$/ inherits diaspora {
# empty
}

node /^diaspora15(?:-\d+)?$/ inherits diaspora {
...
}


There are other variations and altogether different approaches, too,
but that's probably the closest to what you already have.


John

David Campos

unread,
May 11, 2012, 8:56:29 AM5/11/12
to puppet...@googlegroups.com
Thanks, it was the solution that I tried after posting this. I had seen in a puppet bug something about regex matchers at either side of the inherits expression and thought that it could be possible.

I had not thought about doing the double definition, the textual one and the regex. Thanks for pointing it out.
Reply all
Reply to author
Forward
0 new messages