Remove TC Liaisons framework
TC is more connected with project teams with the weekly meeting and PTG TC+Leadership interaction sessions. Also, TC liaisons did not work the way we expected it. In Zed PTG, we decided to remove it. - https://etherpad.opendev.org/p/tc-zed-ptg Change-Id: I08702b015245df35d40e08fa08a3269cc6bb1cac
This commit is contained in:
parent
7482332095
commit
76b54e9284
15
CHAIR.rst
15
CHAIR.rst
@ -70,8 +70,6 @@ When the election results are available, the outgoing chair should:
|
||||
* encourage all TC members to include the "[tc]" topic in their filter
|
||||
list for the openstack-discuss mailing list
|
||||
* propose a patch to remove current chair and vice chair
|
||||
* propose a patch to remove liaisons assigned to previous members
|
||||
(``python ./tools/assign_liaisons.py --remove-all``)
|
||||
|
||||
After the election results are confirmed, the outgoing chair should:
|
||||
|
||||
@ -90,21 +88,8 @@ After the election results are confirmed, the outgoing chair should:
|
||||
|
||||
After the chair status is confirmed, the incoming chair should:
|
||||
|
||||
* start the liaison assignment process (see below)
|
||||
* propose a patch to appoint a vice chair
|
||||
|
||||
Project Team Liaisons
|
||||
=====================
|
||||
|
||||
Each term of the TC we designate 2 members to be liaisons to each
|
||||
project team
|
||||
|
||||
|
||||
* encourage TC members to volunteer to act as liaisons for the project
|
||||
teams they want (set a deadline, ~1 week)
|
||||
* Run ``python ./tools/assign_liaisons.py`` to randomly assign the remaining
|
||||
members.
|
||||
|
||||
Governance Repo Patches
|
||||
=======================
|
||||
|
||||
|
@ -1,143 +0,0 @@
|
||||
# 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.
|
||||
|
||||
"""Build a table of the current members of the TC.
|
||||
"""
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.parsers.rst import directives
|
||||
from docutils.parsers.rst.directives import tables
|
||||
from docutils.utils import SystemMessagePropagation
|
||||
from sphinx.util import logging
|
||||
|
||||
from openstack_governance import projects
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TCLiaisonsTable(tables.Table):
|
||||
"""Insert the members table using the referenced file as source.
|
||||
"""
|
||||
|
||||
HEADERS = ('TC Member', 'Projects')
|
||||
|
||||
option_spec = {'class': directives.class_option,
|
||||
'name': directives.unchanged,
|
||||
'datafile': directives.unchanged,
|
||||
}
|
||||
|
||||
has_content = False
|
||||
|
||||
def run(self):
|
||||
env = self.state.document.settings.env
|
||||
|
||||
# The required argument to the directive is the name of the
|
||||
# file to parse.
|
||||
datafile = self.options.get('datafile')
|
||||
if not datafile:
|
||||
error = self.state_machine.reporter.error(
|
||||
'No filename in membertable directive',
|
||||
nodes.literal_block(self.block_text, self.block_text),
|
||||
line=self.lineno)
|
||||
return [error]
|
||||
|
||||
# Handle the width settings and title
|
||||
try:
|
||||
col_widths = self.get_column_widths(len(self.HEADERS))
|
||||
title, messages = self.make_title()
|
||||
except SystemMessagePropagation as detail:
|
||||
return [detail.args[0]]
|
||||
except Exception as err:
|
||||
error = self.state_machine.reporter.error(
|
||||
'Error processing memberstable directive:\n%s' % err,
|
||||
nodes.literal_block(self.block_text, self.block_text),
|
||||
line=self.lineno,
|
||||
)
|
||||
return [error]
|
||||
|
||||
# Now find the real path to the file, relative to where we are.
|
||||
rel_filename, filename = env.relfn2path(datafile)
|
||||
|
||||
# Build the table node using the parsed file
|
||||
data_iter = projects.load_project_file(filename)
|
||||
liaisons = {}
|
||||
for project_name, project in data_iter.items():
|
||||
proj_liaisons = project.get('liaisons', {})
|
||||
|
||||
for liaison in proj_liaisons.get('tc_members', []):
|
||||
try:
|
||||
liaisons[liaison].extend([project_name])
|
||||
except KeyError:
|
||||
liaisons[liaison] = []
|
||||
liaisons[liaison].extend([project_name])
|
||||
|
||||
table_node = self.build_table(
|
||||
liaisons,
|
||||
col_widths,
|
||||
)
|
||||
table_node['classes'] += self.options.get('class', [])
|
||||
self.add_name(table_node)
|
||||
|
||||
if title:
|
||||
table_node.insert(0, title)
|
||||
|
||||
return [table_node] + messages
|
||||
|
||||
def build_table(self, table_data, col_widths):
|
||||
table = nodes.table()
|
||||
|
||||
# Set up the column specifications
|
||||
# based on the widths.
|
||||
tgroup = nodes.tgroup(cols=len(col_widths))
|
||||
table += tgroup
|
||||
tgroup.extend(nodes.colspec(colwidth=col_width)
|
||||
for col_width in col_widths)
|
||||
|
||||
# Set the headers
|
||||
thead = nodes.thead()
|
||||
tgroup += thead
|
||||
row_node = nodes.row()
|
||||
thead += row_node
|
||||
row_node.extend(
|
||||
nodes.entry(h, nodes.paragraph(text=h))
|
||||
for h in self.HEADERS
|
||||
)
|
||||
|
||||
# The body of the table is made up of rows.
|
||||
# Each row contains a series of entries,
|
||||
# and each entry contains a paragraph of text.
|
||||
tbody = nodes.tbody()
|
||||
tgroup += tbody
|
||||
rows = []
|
||||
for member, tc_projects in table_data.items():
|
||||
trow = nodes.row()
|
||||
# Iterate over the headers in the same order every time.
|
||||
name = nodes.entry()
|
||||
name += nodes.paragraph(text=str(member))
|
||||
trow += name
|
||||
project = nodes.entry()
|
||||
project_list = nodes.paragraph()
|
||||
for proj in tc_projects:
|
||||
project_list += nodes.reference(
|
||||
proj, proj, refuri="projects/%s.html" % proj)
|
||||
project_list += nodes.Text(", ")
|
||||
project += project_list
|
||||
trow += project
|
||||
rows.append(trow)
|
||||
tbody.extend(rows)
|
||||
|
||||
return table
|
||||
|
||||
|
||||
def setup(app):
|
||||
LOG.info('loading tc liaisons extension')
|
||||
app.add_directive('liaisonstable', TCLiaisonsTable)
|
@ -58,9 +58,6 @@ def _team_to_rst(name, info):
|
||||
liaisons = info.get('liaisons')
|
||||
if liaisons:
|
||||
contact_format = {'name': '', 'irc': '', 'email': ''}
|
||||
tc_members = liaisons.get('tc_members')
|
||||
if tc_members:
|
||||
yield ':TC Members Liaisons: ' + ", ".join(tc_members)
|
||||
release = liaisons.get('release', contact_format)
|
||||
if release != contact_format:
|
||||
yield ':Release Liaisons: ' + ', '.join(
|
||||
|
@ -37,7 +37,6 @@ extensions = [
|
||||
'members',
|
||||
'projects',
|
||||
'teams',
|
||||
'tc_liaisons',
|
||||
'badges',
|
||||
'page_context',
|
||||
]
|
||||
|
@ -32,9 +32,6 @@ Release Management:
|
||||
their own releases.
|
||||
url: https://wiki.openstack.org/wiki/Release_Management
|
||||
liaisons:
|
||||
tc_members:
|
||||
- zaneb
|
||||
- ttx
|
||||
release:
|
||||
- name: Hervé Beraud
|
||||
irc: hberaud
|
||||
|
@ -11,7 +11,6 @@ Reference documents which need to be revised over time.
|
||||
principles
|
||||
charter
|
||||
projects/index
|
||||
tc-liaisons
|
||||
popup-teams
|
||||
technical-vision
|
||||
upstream-investment-opportunities/index
|
||||
|
@ -24,8 +24,6 @@ adjutant:
|
||||
python-adjutantclient:
|
||||
repos:
|
||||
- openstack/python-adjutantclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
barbican:
|
||||
ptl:
|
||||
name: Douglas Mendizábal
|
||||
@ -66,8 +64,6 @@ barbican:
|
||||
python-barbicanclient:
|
||||
repos:
|
||||
- openstack/python-barbicanclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
blazar:
|
||||
ptl:
|
||||
name: Pierre Riteau
|
||||
@ -101,8 +97,6 @@ blazar:
|
||||
python-blazarclient:
|
||||
repos:
|
||||
- openstack/python-blazarclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
cinder:
|
||||
ptl:
|
||||
name: Rajat Dhasmana
|
||||
@ -141,8 +135,6 @@ cinder:
|
||||
rbd-iscsi-client:
|
||||
repos:
|
||||
- openstack/rbd-iscsi-client
|
||||
liaisons:
|
||||
tc_members: []
|
||||
cloudkitty:
|
||||
ptl:
|
||||
name: Rafael Weingartner
|
||||
@ -176,8 +168,6 @@ cloudkitty:
|
||||
cloudkitty-tempest-plugin:
|
||||
repos:
|
||||
- openstack/cloudkitty-tempest-plugin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
cyborg:
|
||||
ptl:
|
||||
name: Bailin Zhang
|
||||
@ -206,8 +196,6 @@ cyborg:
|
||||
cyborg-tempest-plugin:
|
||||
repos:
|
||||
- openstack/cyborg-tempest-plugin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
designate:
|
||||
ptl:
|
||||
name: Michael Johnson
|
||||
@ -238,8 +226,6 @@ designate:
|
||||
python-designateclient:
|
||||
repos:
|
||||
- openstack/python-designateclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
ec2-api:
|
||||
ptl:
|
||||
name: Andrey Pavlov
|
||||
@ -257,8 +243,6 @@ ec2-api:
|
||||
ec2api-tempest-plugin:
|
||||
repos:
|
||||
- openstack/ec2api-tempest-plugin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
freezer:
|
||||
ptl:
|
||||
name: ge cong
|
||||
@ -293,8 +277,6 @@ freezer:
|
||||
python-freezerclient:
|
||||
repos:
|
||||
- openstack/python-freezerclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
glance:
|
||||
ptl:
|
||||
name: Abhishek Kekane
|
||||
@ -324,8 +306,6 @@ glance:
|
||||
python-glanceclient:
|
||||
repos:
|
||||
- openstack/python-glanceclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
heat:
|
||||
ptl:
|
||||
name: Rico Lin
|
||||
@ -377,8 +357,6 @@ heat:
|
||||
tosca-parser:
|
||||
repos:
|
||||
- openstack/tosca-parser
|
||||
liaisons:
|
||||
tc_members: []
|
||||
horizon:
|
||||
ptl:
|
||||
name: Vishal Manchanda
|
||||
@ -482,8 +460,6 @@ horizon:
|
||||
xstatic-spin:
|
||||
repos:
|
||||
- openstack/xstatic-spin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
ironic:
|
||||
ptl:
|
||||
name: Iury Gregory Melo Ferreira
|
||||
@ -563,9 +539,6 @@ ironic:
|
||||
virtualbmc:
|
||||
repos:
|
||||
- openstack/virtualbmc
|
||||
liaisons:
|
||||
tc_members: []
|
||||
|
||||
keystone:
|
||||
ptl:
|
||||
name: Douglas Mendizábal
|
||||
@ -604,7 +577,6 @@ keystone:
|
||||
repos:
|
||||
- openstack/ldappool
|
||||
liaisons:
|
||||
tc_members: []
|
||||
release:
|
||||
- name: Gage Hugo
|
||||
irc: gagehugo
|
||||
@ -649,8 +621,6 @@ kolla:
|
||||
- openstack/kayobe
|
||||
- openstack/kayobe-config
|
||||
- openstack/kayobe-config-dev
|
||||
liaisons:
|
||||
tc_members: []
|
||||
kuryr:
|
||||
ptl:
|
||||
name: Maysa de Macedo Souza
|
||||
@ -675,8 +645,6 @@ kuryr:
|
||||
kuryr-tempest-plugin:
|
||||
repos:
|
||||
- openstack/kuryr-tempest-plugin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
magnum:
|
||||
ptl:
|
||||
name: Spyros Trigazis
|
||||
@ -707,8 +675,6 @@ magnum:
|
||||
python-magnumclient:
|
||||
repos:
|
||||
- openstack/python-magnumclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
manila:
|
||||
ptl:
|
||||
name: Carlos Silva
|
||||
@ -745,8 +711,6 @@ manila:
|
||||
python-manilaclient:
|
||||
repos:
|
||||
- openstack/python-manilaclient
|
||||
liaisons:
|
||||
tc_members: []
|
||||
masakari:
|
||||
ptl:
|
||||
name: suzhengwei
|
||||
@ -778,8 +742,6 @@ masakari:
|
||||
masakari-dashboard:
|
||||
repos:
|
||||
- openstack/masakari-dashboard
|
||||
liaisons:
|
||||
tc_members: []
|
||||
mistral:
|
||||
leadership_type: distributed
|
||||
irc-channel: openstack-mistral
|
||||
@ -814,7 +776,6 @@ mistral:
|
||||
repos:
|
||||
- openstack/mistral-extra
|
||||
liaisons:
|
||||
tc_members: []
|
||||
release:
|
||||
- name: Renat Akhmerov
|
||||
irc: rakhmerov
|
||||
@ -910,8 +871,6 @@ monasca:
|
||||
monasca-kibana-plugin:
|
||||
repos:
|
||||
- openstack/monasca-kibana-plugin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
murano:
|
||||
ptl:
|
||||
name: Rong Zhu
|
||||
@ -956,8 +915,6 @@ murano:
|
||||
murano-tempest-plugin:
|
||||
repos:
|
||||
- openstack/murano-tempest-plugin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
neutron:
|
||||
ptl:
|
||||
name: Lajos Katona
|
||||
@ -1035,8 +992,6 @@ neutron:
|
||||
tap-as-a-service:
|
||||
repos:
|
||||
- openstack/tap-as-a-service
|
||||
liaisons:
|
||||
tc_members: []
|
||||
nova:
|
||||
ptl:
|
||||
name: Sylvain Bauza
|
||||
@ -1075,8 +1030,6 @@ nova:
|
||||
os-resource-classes:
|
||||
repos:
|
||||
- openstack/os-resource-classes
|
||||
liaisons:
|
||||
tc_members: []
|
||||
octavia:
|
||||
ptl:
|
||||
name: Gregory Thiemonge
|
||||
@ -1106,8 +1059,6 @@ octavia:
|
||||
octavia-lib:
|
||||
repos:
|
||||
- openstack/octavia-lib
|
||||
liaisons:
|
||||
tc_members: []
|
||||
OpenStack Charms:
|
||||
ptl:
|
||||
name: Alex Kavanagh
|
||||
@ -1695,8 +1646,6 @@ OpenStack Charms:
|
||||
release-management: external
|
||||
repos:
|
||||
- openstack/charm-watcher-dashboard
|
||||
liaisons:
|
||||
tc_members: []
|
||||
openstack-chef:
|
||||
ptl:
|
||||
name: Lance Albertson
|
||||
@ -1791,8 +1740,6 @@ openstack-chef:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/openstack-chef-specs
|
||||
liaisons:
|
||||
tc_members: []
|
||||
OpenStack-Helm:
|
||||
ptl:
|
||||
name: Gage Hugo
|
||||
@ -1835,8 +1782,6 @@ OpenStack-Helm:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/loci
|
||||
liaisons:
|
||||
tc_members: []
|
||||
OpenStackAnsible:
|
||||
ptl:
|
||||
name: Dmitriy Rabotyagov
|
||||
@ -1945,8 +1890,6 @@ OpenStackAnsible:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/openstack-ansible-specs
|
||||
liaisons:
|
||||
tc_members: []
|
||||
OpenStackSDK:
|
||||
ptl:
|
||||
name: Artem Goncharov
|
||||
@ -1993,8 +1936,6 @@ OpenStackSDK:
|
||||
shade:
|
||||
repos:
|
||||
- openstack/shade
|
||||
liaisons:
|
||||
tc_members: []
|
||||
oslo:
|
||||
leadership_type: distributed
|
||||
irc-channel: openstack-oslo
|
||||
@ -2145,7 +2086,6 @@ oslo:
|
||||
- openstack/whereto
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
release:
|
||||
- name: Hervé Beraud
|
||||
irc: hberaud
|
||||
@ -2307,9 +2247,6 @@ Puppet OpenStack:
|
||||
puppet-zaqar:
|
||||
repos:
|
||||
- openstack/puppet-zaqar
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
Quality Assurance:
|
||||
ptl:
|
||||
name: Martin Kopec
|
||||
@ -2406,8 +2343,6 @@ Quality Assurance:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/whitebox-tempest-plugin
|
||||
liaisons:
|
||||
tc_members: []
|
||||
rally:
|
||||
ptl:
|
||||
name: Andrey Kurilin
|
||||
@ -2433,9 +2368,6 @@ rally:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/performance-docs
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
Release Management:
|
||||
ptl:
|
||||
name: Elod Illes
|
||||
@ -2463,8 +2395,6 @@ Release Management:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/specs-cookiecutter
|
||||
liaisons:
|
||||
tc_members: []
|
||||
requirements:
|
||||
ptl:
|
||||
name: Matthew Thode
|
||||
@ -2481,8 +2411,6 @@ requirements:
|
||||
requirements:
|
||||
repos:
|
||||
- openstack/requirements
|
||||
liaisons:
|
||||
tc_members: []
|
||||
sahara:
|
||||
ptl:
|
||||
name: Fossen Qiu
|
||||
@ -2537,9 +2465,6 @@ sahara:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/sahara-specs
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
senlin:
|
||||
ptl:
|
||||
name: XueFeng Liu
|
||||
@ -2568,10 +2493,6 @@ senlin:
|
||||
senlin-tempest-plugin:
|
||||
repos:
|
||||
- openstack/senlin-tempest-plugin
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
|
||||
skyline:
|
||||
ptl:
|
||||
name: Wenxiang Wu
|
||||
@ -2594,9 +2515,6 @@ skyline:
|
||||
skyline-console:
|
||||
repos:
|
||||
- openstack/skyline-console
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
solum:
|
||||
ptl:
|
||||
name: Rong Zhu
|
||||
@ -2628,9 +2546,6 @@ solum:
|
||||
solum-tempest-plugin:
|
||||
repos:
|
||||
- openstack/solum-tempest-plugin
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
storlets:
|
||||
ptl:
|
||||
name: Takashi Kajinami
|
||||
@ -2647,9 +2562,6 @@ storlets:
|
||||
storlets:
|
||||
repos:
|
||||
- openstack/storlets
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
swift:
|
||||
ptl:
|
||||
name: Tim Burke
|
||||
@ -2682,9 +2594,6 @@ swift:
|
||||
swift-bench:
|
||||
repos:
|
||||
- openstack/swift-bench
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
tacker:
|
||||
ptl:
|
||||
name: Yasufumi Ogawa
|
||||
@ -2713,9 +2622,6 @@ tacker:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/tacker-specs
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
Telemetry:
|
||||
ptl:
|
||||
name: Matthias Runge
|
||||
@ -2759,9 +2665,6 @@ Telemetry:
|
||||
telemetry-tempest-plugin:
|
||||
repos:
|
||||
- openstack/telemetry-tempest-plugin
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
tripleo:
|
||||
ptl:
|
||||
name: James Slagle
|
||||
@ -2891,9 +2794,6 @@ tripleo:
|
||||
release-management: none
|
||||
repos:
|
||||
- openstack/tripleo-ha-utils
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
trove:
|
||||
ptl:
|
||||
name: Wu Chunyang
|
||||
@ -2926,9 +2826,6 @@ trove:
|
||||
trove-tempest-plugin:
|
||||
repos:
|
||||
- openstack/trove-tempest-plugin
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
venus:
|
||||
ptl:
|
||||
name: Liye Pang
|
||||
@ -2962,10 +2859,6 @@ venus:
|
||||
venus-tempest-plugin:
|
||||
repos:
|
||||
- openstack/venus-tempest-plugin
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
|
||||
vitrage:
|
||||
ptl:
|
||||
name: Eyal Bar-Ilan
|
||||
@ -3013,9 +2906,6 @@ vitrage:
|
||||
xstatic-moment-timezone:
|
||||
repos:
|
||||
- openstack/xstatic-moment-timezone
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
watcher:
|
||||
ptl:
|
||||
name: chen ke
|
||||
@ -3046,9 +2936,6 @@ watcher:
|
||||
watcher-dashboard:
|
||||
repos:
|
||||
- openstack/watcher-dashboard
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
winstackers:
|
||||
ptl:
|
||||
name: Lucian Petrut
|
||||
@ -3077,9 +2964,6 @@ winstackers:
|
||||
compute-hyperv:
|
||||
repos:
|
||||
- openstack/compute-hyperv
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
zaqar:
|
||||
ptl:
|
||||
name: wang hao
|
||||
@ -3115,9 +2999,6 @@ zaqar:
|
||||
zaqar-ui:
|
||||
repos:
|
||||
- openstack/zaqar-ui
|
||||
|
||||
liaisons:
|
||||
tc_members: []
|
||||
zun:
|
||||
ptl:
|
||||
name: Feng Shengqin
|
||||
@ -3146,5 +3027,3 @@ zun:
|
||||
zun-ui:
|
||||
repos:
|
||||
- openstack/zun-ui
|
||||
liaisons:
|
||||
tc_members: []
|
||||
|
@ -64,29 +64,7 @@ As a TC member, we have two primary ways of communicating.
|
||||
#. IRC channel:
|
||||
Please also join the ``#openstack-tc`` channel on IRC, and set a notification
|
||||
for the string ``tc-members``. There is no requirement to do this, but we
|
||||
recommend also setting a notification for a string with your name. This
|
||||
is also helpful for mentions in other channels if you are the ``tc-liaison``
|
||||
to a specific project.
|
||||
|
||||
TC Project Liasions
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Each project under OpenStack governance is assigned two TC members to act as
|
||||
liaisons. These liaisons should act as a bridge between that project and the
|
||||
TC, helping the project with governance concerns. You will be assigned a list
|
||||
of projects based on random selection if you don't set them yourself. You can
|
||||
pick your preferred projects yourself after you are seated by submitting a
|
||||
patch. This mechanical assignment of tc members as liaisons looks something
|
||||
like this: https://review.opendev.org/#/c/680386/.
|
||||
|
||||
Once you have been assigned your projects, the first work item for new and returning
|
||||
members is to talk to the projects for which you are a liaison. We recommend
|
||||
introducing yourself to the PTL in an email or during a team meeting if you're
|
||||
able to attend them, a greeting to the project team to ensure they know someone
|
||||
to talk to, making sure the TC is an accessible community.
|
||||
|
||||
You can see the assigned list of projects per TC member in
|
||||
:doc:`TC Liaisons </reference/tc-liaisons>`
|
||||
recommend also setting a notification for a string with your name.
|
||||
|
||||
TC Repos
|
||||
~~~~~~~~~
|
||||
|
@ -1,9 +0,0 @@
|
||||
===========
|
||||
TC Liaisons
|
||||
===========
|
||||
|
||||
OpenStack Project Team TC Liasons
|
||||
=================================
|
||||
|
||||
.. liaisonstable::
|
||||
:datafile: ../reference/projects.yaml
|
@ -1,95 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# 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.
|
||||
|
||||
import argparse
|
||||
import collections
|
||||
import random
|
||||
|
||||
from openstack_governance import members
|
||||
from openstack_governance import projects
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
'--member-file',
|
||||
default='reference/members.yaml',
|
||||
help='location of members file, (%(default)s)',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--projects-file',
|
||||
default='reference/projects.yaml',
|
||||
help='location of projects.yaml, (%(default)s)',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--replace-all',
|
||||
action='store_true',
|
||||
help='Replace all assigned liaisons (%(default)s)',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--remove-all',
|
||||
action='store_true',
|
||||
help='Remove all assigned liaisons (%(default)s)',
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
member_nics = [
|
||||
m['irc']
|
||||
for m in members.parse_members_file(args.member_file)
|
||||
]
|
||||
|
||||
project_data = projects.load_project_file(args.projects_file)
|
||||
|
||||
num_teams = len(project_data)
|
||||
assignments_per = num_teams // (len(member_nics) // 2)
|
||||
|
||||
member_counts = collections.Counter({
|
||||
nic: 0
|
||||
for nic in member_nics
|
||||
})
|
||||
|
||||
if not args.replace_all:
|
||||
for _, team in project_data.items():
|
||||
proj_liaisons = team.get('liaisons', {})
|
||||
for member in proj_liaisons.get('tc_members', []):
|
||||
member_counts.update({member: 1})
|
||||
|
||||
choices = []
|
||||
for member, count in sorted(member_counts.items()):
|
||||
choices.extend([member] * (assignments_per - count))
|
||||
# Make sure we have a list in order that isn't assigning the same
|
||||
# person to a team twice.
|
||||
|
||||
for name, team in project_data.items():
|
||||
proj_liaisons = team.get('liaisons', {})
|
||||
liaisons = proj_liaisons.get('tc_members', [])
|
||||
if args.remove_all:
|
||||
team['liaisons']['tc_members'] = []
|
||||
continue
|
||||
if args.replace_all:
|
||||
liaisons = []
|
||||
while len(liaisons) < 2:
|
||||
random.shuffle(choices)
|
||||
next_choice = choices.pop()
|
||||
while next_choice in liaisons:
|
||||
choices.insert(0, next_choice)
|
||||
next_choice = choices.pop()
|
||||
liaisons.append(next_choice)
|
||||
team['liaisons']['tc_members'] = liaisons
|
||||
|
||||
projects.write_project_file(project_data, args.projects_file)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
x
Reference in New Issue
Block a user