On Tue, 30 Apr 2013 15:37:11 -0700 Ryan Uber <r...@ryanuber.com> wrote:
> [accidently sent this to puppet-dev, re-posting to puppet-users] > > Hello puppet-users, > > I am working on a module that provides a custom type. The type when > called will create new resources in the catalog using syntax like: > > Puppet::Type.type(:file).new(:title => 'blah') > > This works fine and the resources are added as expected. However, I am > unable to apply any scoped defaults to the generated resources. So > something like: > > File { > mode => 0750 > } > were do you generate the resources? Puppet already has a method "eval_generate" that every type can implement and which has to return an array of generated resources (that's how puppet generates implicit file resource when you use `recurse`). These resources are automatically added to the catalog. So e.g. Puppet::Type.newtype(:foo) do newparam(:name) [...] def eval_generate resources = [] resources << Puppet::Type.type(:file).new(:title => 'blah') resources end end I played with it a little bit (wanted to make a proof of concept for a `dirtree` type that simulates the behaviour of `mkdir -p`) but I hit problems because autorequirements of generated resources do not seem to work (e.g. You have File['/foo'] in your puppet manifest and your custom type generates a resource File['/foo/bar'] there a no automatic dependencies so File['/foo/bar'] may be applied before File['/foo'] but maybe I am wrong about that one. -Stefan -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To post to this group, send email to puppet-users@googlegroups.com. Visit this group at http://groups.google.com/group/puppet-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.