59cabc808c
These teams are PTL-less and not necessary define their release liaison openstack/release/data/release_liaison.yaml. The problem is that their official reviewers arn't necessarly detected. These changes allow to consider these release liaisons folks. Change-Id: I29295dddb2619043a43957e5e2c2f64d0787784b
88 lines
3.0 KiB
Python
88 lines
3.0 KiB
Python
# All Rights Reserved.
|
|
#
|
|
# 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.
|
|
|
|
"""Get the PTL and release liaison information.
|
|
|
|
Grab the PTL's contact details from the governance repo; and Liaisons
|
|
data from release_liaisons.yaml
|
|
"""
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
from openstack_governance import governance
|
|
|
|
from openstack_releases import liaisons
|
|
|
|
|
|
class Contact(object):
|
|
def __init__(self, contact_data):
|
|
self.name = contact_data['name']
|
|
self.irc = contact_data['irc']
|
|
self.email = contact_data['email']
|
|
|
|
def __str__(self):
|
|
return ("Name : {0.name}\n" +
|
|
"IRC Nick : {0.irc}\n" +
|
|
"Email : {0.email}").format(self)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('team', nargs='+', help='The team(s) to lookup')
|
|
who_group = parser.add_mutually_exclusive_group()
|
|
who_group.add_argument('--ptl', action='store_true', default=False,
|
|
help='Find PTL details')
|
|
who_group.add_argument('--liaisons', action='store_true', default=False,
|
|
help='Find Liaisons details')
|
|
who_group.add_argument('--all', action='store_true', default=True,
|
|
help='Find Liaisons details')
|
|
args = parser.parse_args()
|
|
|
|
gov_data = governance.Governance.from_remote_repo()
|
|
liaison_data = liaisons.get_liaisons()
|
|
|
|
for team_name in args.team:
|
|
contacts = set()
|
|
if args.ptl or args.all:
|
|
team_data = gov_data.get_team(team_name)
|
|
if not team_data:
|
|
print('Unable to find team [%s] in governance data' %
|
|
(args.team),
|
|
file=sys.stderr)
|
|
return 1
|
|
|
|
# Some teams may be PTL-less
|
|
if team_data.ptl.get('email', None):
|
|
contacts.add(Contact(team_data.ptl))
|
|
# At this point we consider this team as a team following the
|
|
# DPL governance model
|
|
else:
|
|
rel_liaisons = team_data.liaisons['release']
|
|
for liaison in rel_liaisons:
|
|
contacts.add(Contact(liaison))
|
|
|
|
if args.liaisons or args.all:
|
|
for liaison in liaison_data.get(team_name.lower(), []):
|
|
contacts.add(Contact(liaison))
|
|
|
|
team_header = '%s Contacts:' % team_name.title()
|
|
print()
|
|
print(team_header)
|
|
print('%s' % ('-' * len(team_header)))
|
|
for contact in contacts:
|
|
print(contact)
|
|
|
|
return 0
|