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, mod_add, mod_delete, mod_replace, new, #reference, #weakref

Constructor Details

This class inherits a constructor from ASF::Base

Instance Attribute Details

#createTimestampObject

Returns the value of attribute createTimestamp.



740
741
742
# File 'lib/whimsy/asf/ldap.rb', line 740

def createTimestamp
  @createTimestamp
end

#modifyTimestampObject

Returns the value of attribute modifyTimestamp.



740
741
742
# File 'lib/whimsy/asf/ldap.rb', line 740

def modifyTimestamp
  @modifyTimestamp
end

Class Method Details

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



720
721
722
# File 'lib/whimsy/asf/ldap.rb', line 720

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

.preloadObject



728
729
730
731
732
733
734
735
736
737
738
# File 'lib/whimsy/asf/ldap.rb', line 728

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



762
763
764
765
766
767
768
# File 'lib/whimsy/asf/ldap.rb', line 762

def add(people)
  @members = nil
  people = (Array(people) & members).map(&:dn)
  ASF.ldap.modify(self.dn, [ASF::Base.mod_add('member', people)])
ensure
  @members = nil
end

#dnObject



724
725
726
# File 'lib/whimsy/asf/ldap.rb', line 724

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

#membersObject



746
747
748
749
750
751
752
# File 'lib/whimsy/asf/ldap.rb', line 746

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



742
743
744
# File 'lib/whimsy/asf/ldap.rb', line 742

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

#remove(people) ⇒ Object



754
755
756
757
758
759
760
# File 'lib/whimsy/asf/ldap.rb', line 754

def remove(people)
  @members = nil
  people = Array(people - members).map(&:dn)
  ASF.ldap.modify(self.dn, [ASF::Base.mod_delete('member', people)])
ensure
  @members = nil
end