module ActiveSambaLdap::Entry::ClassMethods
Public Instance Methods
create(attributes=nil) { |entry| ... }
click to toggle source
Calls superclass method
# File lib/active_samba_ldap/entry.rb, line 9 def create(attributes=nil) pool = nil number_key = nil attributes ||= {} attributes = attributes.stringify_keys ensure_ou(attributes[dn_attribute]) entry = super do |entry| options, pool, number_key = prepare_create_options(entry, attributes) entry.fill_default_values(options) yield entry if block_given? end if entry.errors.empty? and pool pool[number_key] = Integer(entry[number_key]).succ unless pool.save pool.each do |key, value| entry.add("pool: #{key}", value) end end end entry end
samba4?()
click to toggle source
# File lib/active_samba_ldap/entry.rb, line 31 def samba4? configuration[:samba4] end
Private Instance Methods
default_classes()
click to toggle source
# File lib/active_samba_ldap/entry.rb, line 36 def default_classes if samba4? samba_object_classes else unix_object_classes end end
default_recommended_classes()
click to toggle source
# File lib/active_samba_ldap/entry.rb, line 44 def default_recommended_classes if samba4? [] else samba_object_classes end end
ensure_number(key, options)
click to toggle source
# File lib/active_samba_ldap/entry.rb, line 75 def ensure_number(key, options) number = options[key] pool = nil unless number pool = ensure_pool(options) number = pool.send("find_available_#{key}", self) end [number, pool] end
ensure_ou(dn)
click to toggle source
# File lib/active_samba_ldap/entry.rb, line 52 def ensure_ou(dn) return if dn.nil? dn_value, ou = dn.split(/,/, 2) return if ou.nil? prefixes = [prefix] ou.split(/\s*,\s*/).reverse_each do |entry| name, value = entry.split(/\s*=\s*/, 2).collect {|x| x.strip} raise ArgumentError, _("%s must be only ou") % ou if name != "ou" ou_class = Class.new(ActiveSambaLdap::Ou) ou_class.ldap_mapping :prefix => prefixes.join(',') prefixes.unshift(entry) next if ou_class.exists?(value) ou = ou_class.new(value) ou.save! end end
ensure_pool(options)
click to toggle source
# File lib/active_samba_ldap/entry.rb, line 85 def ensure_pool(options) pool = options[:pool] unless pool pool_class = options[:pool_class] unless pool_class pool_class = Class.new(UnixIdPool) pool_class.ldap_mapping end samba_domain = options[:samba_domain] samba_domain ||= pool_class.configuration[:samba_domain] pool = options[:pool] = pool_class.find(samba_domain) end pool end
prepare_create_options_for_number(key, entry, options)
click to toggle source
# File lib/active_samba_ldap/entry.rb, line 69 def prepare_create_options_for_number(key, entry, options) options = {key => entry[key]}.merge(options) number, pool = ensure_number(key, options) [options.merge(key => number), pool, key] end