On Mon, Oct 15, 2012 at 3:04 PM, Jakov Sosic <jso...@srce.hr> wrote: > On 10/15/2012 11:44 PM, Stefan Schulte wrote: > >> The instances method is a class method and has to return an array of >> providers. So this often looks like this >> >> def self.instances >> systems = [] >> my_fancy_command.each_line do |line| >> somehow_split_line_into_different_fields_like_name_and_interfaces >> systems << new( >> :name => name, >> :interfaces => interfaces, >> :ensure => :present >> ) >> end >> systems >> end > > Huh, so I have to build whole resources in self.instances, with all the > possible properties? > > >> This command can either return with a non zero exit code (no packages >> found) in case we have zero keys or it will print one line per key. >> For each line a provider instance is added to the array that is finally >> returned. > > Got it from the upper code. > > >> I hope that helps. An example of a query method can be found in the >> package provider in puppet core. The package provider is a bit special >> here because it does not trust its prefetched values. This is because >> one resource can change the state of another resource: >> >> package { "mod_ssl": ensure => installed } >> package { "httpd": ensure => installed } >> >> The ensure property of "httpd" can change in the middle of a puppetrun (if >> mod_ssl is installed first httpd will be installed as a dependency) >> so the prefetched value of :absent can be obsolete when puppet actually >> handles the resource Package["httpd"]. For you cobblersystem type I do >> not think that one resource may influence another resource right? > > Yeah, you are right, one cobblersystem instance cannot influence > creation or modification of other instance. > > But now that you mention, I do have one more question in this regard. Is > it possible for some property to create auto-require with some other > resource? Except from cobblersystem I do have 3 another custom types > (cobblerprofile, cobblerdistro and cobblerrepo). So, for example: > > cobblerprofile { 'foo': > ensure => present, > } > cobblersystem { 'bar': > ensure => present, > profile => 'foo', > require => Cobblerprofile['foo'], > } > > Is there a way to skip the last require, and force it through profile > property in the type/provider code?
Since you already specify the profile, in your cobblersystem resource type add autorequire. autorequire(:cobblerprofile) do self[:profile] end Thanks, Nan -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.