whimsical-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ru...@apache.org
Subject [whimsy] branch master updated: Class to encapsulate the adding and removal of committers
Date Tue, 14 Nov 2017 19:37:02 GMT
This is an automated email from the ASF dual-hosted git repository.

rubys pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git


The following commit(s) were added to refs/heads/master by this push:
     new fa27e72  Class to encapsulate the adding and removal of committers
fa27e72 is described below

commit fa27e722436b7650b1c67bf8289729de750537e4
Author: Sam Ruby <rubys@intertwingly.net>
AuthorDate: Tue Nov 14 14:36:42 2017 -0500

    Class to encapsulate the adding and removal of committers
---
 lib/whimsy/asf/ldap.rb | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/lib/whimsy/asf/ldap.rb b/lib/whimsy/asf/ldap.rb
index 2121ce5..6027c76 100644
--- a/lib/whimsy/asf/ldap.rb
+++ b/lib/whimsy/asf/ldap.rb
@@ -505,6 +505,50 @@ module ASF
     end
   end
 
+  # Manage committers: list, add, and remove people not only from the list
+  # of people, but from the list of committers.
+  class Committer < Base
+    @base = 'ou=role,ou=groups,dc=apache,dc=org'
+
+    # get a list of committers
+    def self.list()
+      ASF.search_one(base, 'cn=committers', 'member').flatten.
+        map {|uid| Person.find uid[/uid=(.*?),/,1]}
+    end
+
+    # add a new committer to LDAP.  Attrs must include uid, cn, and mail
+    def self.add(attrs)
+      # add person to LDAP
+      person = ASF::Person.add(attrs)
+
+      # add person to 'new' committers list
+      ASF::LDAP.modify("cn=committers,#@base", 
+        [ASF::Base.mod_add('member', [person.dn])])
+
+      # add person to 'legacy' committers list
+      ASF::Group['committers'].add(person)
+
+      # return new person
+      person
+    end
+
+    # remove a committer from LDAP
+    def self.remove(person)
+      # if person is a string, find the person object
+      person = ASF::Person[person] if person.instance_of? String
+
+      # remove person to 'legacy' committers list, ignoring exceptions
+      ASF::Group['committers'].add(person) rescue nil
+
+      # remove person from 'new' committers list, ignoring exceptions
+      ASF::LDAP.modify("cn=committers,#@base", 
+        [ASF::Base.mod_delete('member', [person.dn])]) rescue nil
+
+      # remove person from LDAP
+      ASF::Person.remove(person.id)
+    end
+  end
+
   class Person < Base
     @base = 'ou=people,dc=apache,dc=org'
 

-- 
To stop receiving notification emails like this one, please contact
['"commits@whimsical.apache.org" <commits@whimsical.apache.org>'].

Mime
View raw message