b0e002d520
For consistency use development version of the LP API in the scripts that query the Launchpad API. Change-Id: I39b145684563738dd5615d863720ec364c4987c3 Reviewed-on: https://review.openstack.org/11508 Reviewed-by: linuxjedi <andrew@linuxjedi.co.uk> Approved: Monty Taylor <mordred@inaugust.com> Reviewed-by: Monty Taylor <mordred@inaugust.com> Tested-by: Jenkins
73 lines
2.4 KiB
Python
Executable File
73 lines
2.4 KiB
Python
Executable File
#! /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 urllib
|
|
import re
|
|
|
|
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,
|
|
version='devel')
|
|
|
|
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")
|