Issue #2716 has been updated by Luke Kanies. Status changed from Unreviewed to Rejected
We had a discussion about exactly this a few months ago: http://groups.google.com/group/puppet-dev/browse_thread/thread/76455902cab56091/d08c821f0f3bd861?lnk=gst&q=module+search#d08c821f0f3bd861. Our initial module design, years ago, specifically provided the current behaviour, and I actually wrote all of the code necessary to change to the behaviour you're requesting. However, after discussing it on the list, we decided that the current behaviour makes more sense, and the right way to provide the behaviour you're asking for is to just have a separate module in your module path that provides the extra classes. Please reopen if that thread doesn't satisfy your questions. Or, reopen the thread on the -dev list. ---------------------------------------- Refactor #2716: Provide some way to override puppet classes http://projects.reductivelabs.com/issues/2716 Author: Robin Bowes Status: Rejected Priority: Normal Assigned to: Category: modules Target version: Affected version: 0.25.1rc1 Branch: I like to try and write generic puppet modules, ie. they are standalone as much as possible and should work in copied and pasted into another puppet environment. However, sometimes I may want to use a generic module but override the configuration. I generally write my modules like this: <pre>vsftpd |-- files | `-- vsftpd.conf `-- manifests |-- config.pp |-- init.pp |-- install.pp `-- service.pp</pre> init.pp contains sometihng like this: <pre>class vsftpd { require vsftpd::install, vsftpd::config, vsftpd::service }</pre> I had hoped that I could override classes by using modulepath like: <pre>site/modules:generic/modules</pre> I would put my generic modules in the generic/modules tree and over-ride specific class by putting them in the site/modules tree. So, I created a vsftpd tree (as above) in generic/modules and created the following tree in site/modules: <pre>vsftpd `-- manifests `-- config.pp</pre> I also added a module for my test node: <pre>node `-- manifests `-- a001.pp</pre> a001.pp contains: <pre>class node::a001 { include vsftpd }</pre> When I run puppetd --test on node a001, I get this error: <pre># puppetd --test info: Retrieving plugin err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class vsftpd in namespaces node::a001 at /etc/puppet/site/modules/node/manifests/a001.pp:3 on node a001.private.statcounter.com warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run</pre> It seems that puppet is finding site/modules/vsftpd and assuming that the vsftpd class is in site/modules/vsftpd/manifests/init.pp, which of course it isn't. I suggest that puppet should look for <modulename>/manifests/init.pp (not just <modulename>) in each element of $modulepath before deciding that it can't find <modulename>. This would allow classes to be over-ridden. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://reductivelabs.com/redmine/my/account --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en -~----------~----~----~----~------~----~------~--~---
