On Fri, Jan 30, 2015 at 7:29 AM, Luke Kanies <l...@puppetlabs.com> wrote:
> On Jan 30, 2015, at 1:37 AM, Nan Liu <nan....@gmail.com> wrote: > > > I'm trying to use ini_setting as a parent provider. Everything works well, > but to support purging, the resources provider need to specify the target > file via self.file_path. Initially this seems straightforward, but the > config file location can vary based on installation settings. All the > examples I've seen have a hard coded filepath in self.file_path. I can't > use parameter in the puppet type to provide the file path because it's only > accessible in the normal setter/getter via resources[:file_path]. > scope.lookupvar is definitely not available, so is there a way to access > the catalog in self.* methods in the provider? > > > The self.* methods are class methods, so they shouldn’t generally have > access to per-run values like the catalog. > > How are you setting the path for the file? You could maybe have that > process set the path variable on the provider. > So using puppetlabs-splunk as an example [1] (for more background see inifile [2]). The provider hard codes the config file path. If the software package is installed elsewhere, this provider is not flexible enough to look for it. Ideally the file_path should be: def self.file_path File.join( scope.lookupvar("splunk::params::forwader_confdir"), 'inputs.conf' ) end But the provider is way too late in the game trying to access a value that exists during compilation. So the catalog seems like the next best place for figuring out where is splunk installed. After sleeping on it, I suppose we can also write a setting file on the client system indicating where splunk is installed, and read it back in the provider, but that seems like such a round about way to get this info. Thanks, Nan 1. https://github.com/puppetlabs/puppetlabs-splunk/blob/master/lib/puppet/provider/splunkforwarder_input/ini_setting.rb 2. https://github.com/puppetlabs/puppetlabs-inifile/blob/master/lib/puppet/provider/ini_setting/ruby.rb#L5-L34 -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/CACqVBqDvQv7YC1u-Kr_%3D%2Bp%2BoARiQ-qQGwG8n5BobdmpzSgQykA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.