Move gerrit scripts to puppet.

Take the things from openstack-ci/gerrit and move them directly
in to the puppet module. Install them using the model we're using
for the jenkins slave scripts.

Change-Id: I420b2b895bd57d40232b2cdda437617373a82890
diff --git a/update_cla_group.py b/update_cla_group.py
new file mode 100755
index 0000000..91365a2
--- /dev/null
+++ b/update_cla_group.py
@@ -0,0 +1,77 @@
+#! /usr/bin/env python
+# Copyright (C) 2011 OpenStack, LLC.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# Add launchpad ids listed in the wiki CLA page to the CLA group in LP.
+
+import os
+import sys
+import uuid
+import os
+import urllib
+import re
+
+import StringIO
+import ConfigParser
+
+from launchpadlib.launchpad import Launchpad
+from launchpadlib.uris import LPNET_SERVICE_ROOT
+
+DEBUG = False
+
+LP_CACHE_DIR = '~/.launchpadlib/cache'
+LP_CREDENTIALS = '~/.launchpadlib/creds'
+CONTRIBUTOR_RE = re.compile(r'.*?\|\|\s*(?P<name>.*?)\s*\|\|\s*(?P<login>.*?)\s*\|\|\s*(?P<trans>.*?)\s*\|\|.*?')
+LINK_RE = re.compile(r'\[\[.*\|\s*(?P<name>.*)\s*\]\]')
+
+for check_path in (os.path.dirname(LP_CACHE_DIR),
+                   os.path.dirname(LP_CREDENTIALS)):
+    if not os.path.exists(check_path):
+        os.makedirs(check_path)
+
+wiki_members = []
+for line in urllib.urlopen('http://wiki.openstack.org/Contributors?action=raw'):
+    m = CONTRIBUTOR_RE.match(line)
+    if m and m.group('login') and m.group('trans'):
+        login = m.group('login')
+        if login=="<#c0c0c0>'''Launchpad ID'''": continue
+        l = LINK_RE.match(login)
+        if l:
+            login = l.group('name')
+        wiki_members.append(login)
+
+launchpad = Launchpad.login_with('CLA Team Sync', LPNET_SERVICE_ROOT,
+                                 LP_CACHE_DIR,
+                                 credentials_file = LP_CREDENTIALS)
+
+lp_members = []
+
+team = launchpad.people['openstack-cla']
+for detail in team.members_details:
+    user = None
+    # detail.self_link ==
+    # 'https://api.launchpad.net/1.0/~team/+member/${username}'
+    login = detail.self_link.split('/')[-1]
+    status = detail.status
+    lp_members.append(login)
+
+for wm in wiki_members:
+    if wm not in lp_members:
+        print "Need to add %s to LP" % (wm)
+        try:
+            person = launchpad.people[wm]
+        except:
+            print 'Unable to find %s on LP'%wm
+            continue
+        status = team.addMember(person=person, status="Approved")