To all,

My ruby is failing me as I try to create a custom provider. I have a custom 
provider I am writing that uses the net-ldap gem that will, based on the 
custom type create, destroy and modify LDAP entries. What I am struggling 
with is the difference between the class level methods: self.instance and 
self.prefetch and instance level methods: create, destroy, etc.

As things currently stand I have in my custom provider code

  def self.ldap_connection  ## Class level method
    Puppet.debug("Creating new LDAP connection")
    unless @ldap_connection
      @ldap_conection = Net::LDAP.new(
        :host => '127.0.01',
        .......
     @ldap_connection
   end

   def self.prefetch           ## Class level method
      ldap_connection.search(:base => Services_Base, :filter => 
searchFilter ) do |entry|
       .... <code to parse output>
       results << new ( .... )
       results
   end

  def create   ## Instance level method
    self.class.ldap_connection.add(:dn => mydn, :attributes => myattr)
  end


The above all works fine, I can create and destory LDAP entries and modify 
attributes based on my custom type without a problem. But if you look at 
the self.ldap_connection I hard-coded the host. What I want to do, is 
create a parameter in the type, called ldapserver, which I then can use in 
self.ldap_connect. 

I tried 

@ldap_conection = Net::LDAP.new(
        :host => @resource[:ldapserver],

But when I debug @resource[:ldapserver] it is nil so I'm obviously not 
access it correctly. I also tried @@resource[:ldapserver] thinking resource 
is a class level variable, but still no luck. 

I've also tried to make def ldap_connection, so it is an instance level 
method,but the I run into issues in self.instances where I need to open a 
LDAP connection to prefetch, and the method is instance level, so not 
available at the class level, self.instances.

Thanks
Len

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/d2eb2130-374c-4292-9412-cd01a32355c1%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to