cb6504e9af
This is a large change as it does several things 1. Moves to using the gerrit REST API to collecting open reviews (as opposed to ssh) 2. Moves the selection of validating commits from scraping git logs to the gerrit REST API 3. Uses the new utils.py function for getting the project data 4. Avoids any git checkouts/downloads during the validation process 5. tools/check-new-candidacy still checks all open changes 6. tools/check-ptl-candidacy.py checks a single change, now specified as a change ID rather then a file path Work to be done in follow-up commits 1. Add testing, now that this is more modular we can mock json blobs to test code and avoid regressions 2. Add a manual toll to specify a project and community member and check that, even if it doesn't match data in an open review 3. Add quality tools such as flake8 / yamllint to keep code/data neat 4. Modify the docs generation to understand that files are now IRC nicks and to get the change author as the candidate. Change-Id: Ibd7fad3eb4d39f1edca624b981fa602d2b4c4d40
60 lines
2.1 KiB
Python
Executable File
60 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
# 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.
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
import check_candidacy
|
|
import utils
|
|
|
|
|
|
def main():
|
|
description = ('Check if the owner of a change is a valid candidate as '
|
|
'described in the change')
|
|
parser = argparse.ArgumentParser(description)
|
|
parser.add_argument(dest='change_id', help=('A valid gerrit change ID'))
|
|
parser.add_argument('--limit', dest='limit', type=int, default=1,
|
|
help=('How many validating changes to report. '
|
|
'A negative value means report many. '
|
|
'Default: %(default)s'))
|
|
parser.add_argument('--tag', dest='tag', default=utils.PROJECTS_TAG,
|
|
help=('The governance tag to validate against. '
|
|
'Default: %(default)s'))
|
|
|
|
args = parser.parse_args()
|
|
review = utils.get_reviews(args.change_id)[0]
|
|
owner = review.get('owner', {})
|
|
if args.limit < 0:
|
|
args.limit = 100
|
|
|
|
try:
|
|
found = check_candidacy.check_candidacy(review['change_id'],
|
|
review=review)
|
|
except Exception as exc:
|
|
print("[E] %s\n\n" % (exc))
|
|
else:
|
|
if found:
|
|
print('SUCESS: %s is a valid candidate\n\n' % (owner['email']))
|
|
return 0
|
|
else:
|
|
print('[E]: %s is not a valid candidate\n\n' % (owner['email']))
|
|
return 1
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|