Class: ASF::Service

Inherits:
Base
  • Object
show all
Defined in:
lib/whimsy/asf/ldap.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

[], #base, base, collection, find, #id, #initialize, new, #reference, #weakref

Constructor Details

This class inherits a constructor from ASF::Base

Instance Attribute Details

#createTimestampObject

Returns the value of attribute createTimestamp.



536
537
538
# File 'lib/whimsy/asf/ldap.rb', line 536

def createTimestamp
  @createTimestamp
end

#modifyTimestampObject

Returns the value of attribute modifyTimestamp.



536
537
538
# File 'lib/whimsy/asf/ldap.rb', line 536

def modifyTimestamp
  @modifyTimestamp
end

Class Method Details

.list(filter = 'cn=*') ⇒ Object



516
517
518
# File 'lib/whimsy/asf/ldap.rb', line 516

def self.list(filter='cn=*')
  ASF.search_one(base, filter, 'cn').flatten
end

.preloadObject



524
525
526
527
528
529
530
531
532
533
534
# File 'lib/whimsy/asf/ldap.rb', line 524

def self.preload
  Hash[ASF.search_one(base, "cn=*", %w(dn member modifyTimestamp createTimestamp)).map do |results|
    cn = results['dn'].first[/^cn=(.*?),/, 1]
    service = ASF::Service.find(cn)
    service.modifyTimestamp = results['modifyTimestamp'].first # it is returned as an array of 1 entry
    service.createTimestamp = results['createTimestamp'].first # it is returned as an array of 1 entry
    members = results['member'] || []
    service.members = members
    [service, members]
  end]
end

Instance Method Details

#add(people) ⇒ Object



557
558
559
560
561
562
# File 'lib/whimsy/asf/ldap.rb', line 557

def add(people)
  people = Array(people).map(&:dn)
  mod = ::LDAP::Mod.new(::LDAP::LDAP_MOD_ADD, 'member', people)
  ASF.ldap.modify(self.dn, [mod])
  @members = nil
end

#dnObject



520
521
522
# File 'lib/whimsy/asf/ldap.rb', line 520

def dn
  "cn=#{id},#{self.class.base}"
end

#membersObject



542
543
544
545
546
547
548
# File 'lib/whimsy/asf/ldap.rb', line 542

def members
  members = weakref(:members) do
    ASF.search_one(base, "cn=#{name}", 'member').flatten
  end

  members.map {|uid| Person.find uid[/uid=(.*?),/,1]}
end

#members=(members) ⇒ Object



538
539
540
# File 'lib/whimsy/asf/ldap.rb', line 538

def members=(members)
  @members = WeakRef.new(members)
end

#remove(people) ⇒ Object



550
551
552
553
554
555
# File 'lib/whimsy/asf/ldap.rb', line 550

def remove(people)
  people = Array(people).map(&:dn)
  mod = ::LDAP::Mod.new(::LDAP::LDAP_MOD_DELETE, 'member', people)
  ASF.ldap.modify(self.dn, [mod])
  @members = nil
end