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
|
* encourage all TC members to include the "[tc]" topic in their filter
|
||||||
list for the openstack-discuss mailing list
|
list for the openstack-discuss mailing list
|
||||||
* propose a patch to remove current chair and vice chair
|
* 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:
|
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:
|
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
|
* 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
|
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')
|
liaisons = info.get('liaisons')
|
||||||
if liaisons:
|
if liaisons:
|
||||||
contact_format = {'name': '', 'irc': '', 'email': ''}
|
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)
|
release = liaisons.get('release', contact_format)
|
||||||
if release != contact_format:
|
if release != contact_format:
|
||||||
yield ':Release Liaisons: ' + ', '.join(
|
yield ':Release Liaisons: ' + ', '.join(
|
||||||
|
|
|
@ -37,7 +37,6 @@ extensions = [
|
||||||
'members',
|
'members',
|
||||||
'projects',
|
'projects',
|
||||||
'teams',
|
'teams',
|
||||||
'tc_liaisons',
|
|
||||||
'badges',
|
'badges',
|
||||||
'page_context',
|
'page_context',
|
||||||
]
|
]
|
||||||
|
|
|
@ -32,9 +32,6 @@ Release Management:
|
||||||
their own releases.
|
their own releases.
|
||||||
url: https://wiki.openstack.org/wiki/Release_Management
|
url: https://wiki.openstack.org/wiki/Release_Management
|
||||||
liaisons:
|
liaisons:
|
||||||
tc_members:
|
|
||||||
- zaneb
|
|
||||||
- ttx
|
|
||||||
release:
|
release:
|
||||||
- name: Hervé Beraud
|
- name: Hervé Beraud
|
||||||
irc: hberaud
|
irc: hberaud
|
||||||
|
|
|
@ -11,7 +11,6 @@ Reference documents which need to be revised over time.
|
||||||
principles
|
principles
|
||||||
charter
|
charter
|
||||||
projects/index
|
projects/index
|
||||||
tc-liaisons
|
|
||||||
popup-teams
|
popup-teams
|
||||||
technical-vision
|
technical-vision
|
||||||
upstream-investment-opportunities/index
|
upstream-investment-opportunities/index
|
||||||
|
|
|
@ -24,8 +24,6 @@ adjutant:
|
||||||
python-adjutantclient:
|
python-adjutantclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-adjutantclient
|
- openstack/python-adjutantclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
barbican:
|
barbican:
|
||||||
ptl:
|
ptl:
|
||||||
name: Douglas Mendizábal
|
name: Douglas Mendizábal
|
||||||
|
@ -66,8 +64,6 @@ barbican:
|
||||||
python-barbicanclient:
|
python-barbicanclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-barbicanclient
|
- openstack/python-barbicanclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
blazar:
|
blazar:
|
||||||
ptl:
|
ptl:
|
||||||
name: Pierre Riteau
|
name: Pierre Riteau
|
||||||
|
@ -101,8 +97,6 @@ blazar:
|
||||||
python-blazarclient:
|
python-blazarclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-blazarclient
|
- openstack/python-blazarclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
cinder:
|
cinder:
|
||||||
ptl:
|
ptl:
|
||||||
name: Rajat Dhasmana
|
name: Rajat Dhasmana
|
||||||
|
@ -141,8 +135,6 @@ cinder:
|
||||||
rbd-iscsi-client:
|
rbd-iscsi-client:
|
||||||
repos:
|
repos:
|
||||||
- openstack/rbd-iscsi-client
|
- openstack/rbd-iscsi-client
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
cloudkitty:
|
cloudkitty:
|
||||||
ptl:
|
ptl:
|
||||||
name: Rafael Weingartner
|
name: Rafael Weingartner
|
||||||
|
@ -176,8 +168,6 @@ cloudkitty:
|
||||||
cloudkitty-tempest-plugin:
|
cloudkitty-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/cloudkitty-tempest-plugin
|
- openstack/cloudkitty-tempest-plugin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
cyborg:
|
cyborg:
|
||||||
ptl:
|
ptl:
|
||||||
name: Bailin Zhang
|
name: Bailin Zhang
|
||||||
|
@ -206,8 +196,6 @@ cyborg:
|
||||||
cyborg-tempest-plugin:
|
cyborg-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/cyborg-tempest-plugin
|
- openstack/cyborg-tempest-plugin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
designate:
|
designate:
|
||||||
ptl:
|
ptl:
|
||||||
name: Michael Johnson
|
name: Michael Johnson
|
||||||
|
@ -238,8 +226,6 @@ designate:
|
||||||
python-designateclient:
|
python-designateclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-designateclient
|
- openstack/python-designateclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
ec2-api:
|
ec2-api:
|
||||||
ptl:
|
ptl:
|
||||||
name: Andrey Pavlov
|
name: Andrey Pavlov
|
||||||
|
@ -257,8 +243,6 @@ ec2-api:
|
||||||
ec2api-tempest-plugin:
|
ec2api-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/ec2api-tempest-plugin
|
- openstack/ec2api-tempest-plugin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
freezer:
|
freezer:
|
||||||
ptl:
|
ptl:
|
||||||
name: ge cong
|
name: ge cong
|
||||||
|
@ -293,8 +277,6 @@ freezer:
|
||||||
python-freezerclient:
|
python-freezerclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-freezerclient
|
- openstack/python-freezerclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
glance:
|
glance:
|
||||||
ptl:
|
ptl:
|
||||||
name: Abhishek Kekane
|
name: Abhishek Kekane
|
||||||
|
@ -324,8 +306,6 @@ glance:
|
||||||
python-glanceclient:
|
python-glanceclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-glanceclient
|
- openstack/python-glanceclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
heat:
|
heat:
|
||||||
ptl:
|
ptl:
|
||||||
name: Rico Lin
|
name: Rico Lin
|
||||||
|
@ -377,8 +357,6 @@ heat:
|
||||||
tosca-parser:
|
tosca-parser:
|
||||||
repos:
|
repos:
|
||||||
- openstack/tosca-parser
|
- openstack/tosca-parser
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
horizon:
|
horizon:
|
||||||
ptl:
|
ptl:
|
||||||
name: Vishal Manchanda
|
name: Vishal Manchanda
|
||||||
|
@ -482,8 +460,6 @@ horizon:
|
||||||
xstatic-spin:
|
xstatic-spin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/xstatic-spin
|
- openstack/xstatic-spin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
ironic:
|
ironic:
|
||||||
ptl:
|
ptl:
|
||||||
name: Iury Gregory Melo Ferreira
|
name: Iury Gregory Melo Ferreira
|
||||||
|
@ -563,9 +539,6 @@ ironic:
|
||||||
virtualbmc:
|
virtualbmc:
|
||||||
repos:
|
repos:
|
||||||
- openstack/virtualbmc
|
- openstack/virtualbmc
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
|
|
||||||
keystone:
|
keystone:
|
||||||
ptl:
|
ptl:
|
||||||
name: Douglas Mendizábal
|
name: Douglas Mendizábal
|
||||||
|
@ -604,7 +577,6 @@ keystone:
|
||||||
repos:
|
repos:
|
||||||
- openstack/ldappool
|
- openstack/ldappool
|
||||||
liaisons:
|
liaisons:
|
||||||
tc_members: []
|
|
||||||
release:
|
release:
|
||||||
- name: Gage Hugo
|
- name: Gage Hugo
|
||||||
irc: gagehugo
|
irc: gagehugo
|
||||||
|
@ -649,8 +621,6 @@ kolla:
|
||||||
- openstack/kayobe
|
- openstack/kayobe
|
||||||
- openstack/kayobe-config
|
- openstack/kayobe-config
|
||||||
- openstack/kayobe-config-dev
|
- openstack/kayobe-config-dev
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
kuryr:
|
kuryr:
|
||||||
ptl:
|
ptl:
|
||||||
name: Maysa de Macedo Souza
|
name: Maysa de Macedo Souza
|
||||||
|
@ -675,8 +645,6 @@ kuryr:
|
||||||
kuryr-tempest-plugin:
|
kuryr-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/kuryr-tempest-plugin
|
- openstack/kuryr-tempest-plugin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
magnum:
|
magnum:
|
||||||
ptl:
|
ptl:
|
||||||
name: Spyros Trigazis
|
name: Spyros Trigazis
|
||||||
|
@ -707,8 +675,6 @@ magnum:
|
||||||
python-magnumclient:
|
python-magnumclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-magnumclient
|
- openstack/python-magnumclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
manila:
|
manila:
|
||||||
ptl:
|
ptl:
|
||||||
name: Carlos Silva
|
name: Carlos Silva
|
||||||
|
@ -745,8 +711,6 @@ manila:
|
||||||
python-manilaclient:
|
python-manilaclient:
|
||||||
repos:
|
repos:
|
||||||
- openstack/python-manilaclient
|
- openstack/python-manilaclient
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
masakari:
|
masakari:
|
||||||
ptl:
|
ptl:
|
||||||
name: suzhengwei
|
name: suzhengwei
|
||||||
|
@ -778,8 +742,6 @@ masakari:
|
||||||
masakari-dashboard:
|
masakari-dashboard:
|
||||||
repos:
|
repos:
|
||||||
- openstack/masakari-dashboard
|
- openstack/masakari-dashboard
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
mistral:
|
mistral:
|
||||||
leadership_type: distributed
|
leadership_type: distributed
|
||||||
irc-channel: openstack-mistral
|
irc-channel: openstack-mistral
|
||||||
|
@ -814,7 +776,6 @@ mistral:
|
||||||
repos:
|
repos:
|
||||||
- openstack/mistral-extra
|
- openstack/mistral-extra
|
||||||
liaisons:
|
liaisons:
|
||||||
tc_members: []
|
|
||||||
release:
|
release:
|
||||||
- name: Renat Akhmerov
|
- name: Renat Akhmerov
|
||||||
irc: rakhmerov
|
irc: rakhmerov
|
||||||
|
@ -910,8 +871,6 @@ monasca:
|
||||||
monasca-kibana-plugin:
|
monasca-kibana-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/monasca-kibana-plugin
|
- openstack/monasca-kibana-plugin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
murano:
|
murano:
|
||||||
ptl:
|
ptl:
|
||||||
name: Rong Zhu
|
name: Rong Zhu
|
||||||
|
@ -956,8 +915,6 @@ murano:
|
||||||
murano-tempest-plugin:
|
murano-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/murano-tempest-plugin
|
- openstack/murano-tempest-plugin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
neutron:
|
neutron:
|
||||||
ptl:
|
ptl:
|
||||||
name: Lajos Katona
|
name: Lajos Katona
|
||||||
|
@ -1035,8 +992,6 @@ neutron:
|
||||||
tap-as-a-service:
|
tap-as-a-service:
|
||||||
repos:
|
repos:
|
||||||
- openstack/tap-as-a-service
|
- openstack/tap-as-a-service
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
nova:
|
nova:
|
||||||
ptl:
|
ptl:
|
||||||
name: Sylvain Bauza
|
name: Sylvain Bauza
|
||||||
|
@ -1075,8 +1030,6 @@ nova:
|
||||||
os-resource-classes:
|
os-resource-classes:
|
||||||
repos:
|
repos:
|
||||||
- openstack/os-resource-classes
|
- openstack/os-resource-classes
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
octavia:
|
octavia:
|
||||||
ptl:
|
ptl:
|
||||||
name: Gregory Thiemonge
|
name: Gregory Thiemonge
|
||||||
|
@ -1106,8 +1059,6 @@ octavia:
|
||||||
octavia-lib:
|
octavia-lib:
|
||||||
repos:
|
repos:
|
||||||
- openstack/octavia-lib
|
- openstack/octavia-lib
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
OpenStack Charms:
|
OpenStack Charms:
|
||||||
ptl:
|
ptl:
|
||||||
name: Alex Kavanagh
|
name: Alex Kavanagh
|
||||||
|
@ -1695,8 +1646,6 @@ OpenStack Charms:
|
||||||
release-management: external
|
release-management: external
|
||||||
repos:
|
repos:
|
||||||
- openstack/charm-watcher-dashboard
|
- openstack/charm-watcher-dashboard
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
openstack-chef:
|
openstack-chef:
|
||||||
ptl:
|
ptl:
|
||||||
name: Lance Albertson
|
name: Lance Albertson
|
||||||
|
@ -1791,8 +1740,6 @@ openstack-chef:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/openstack-chef-specs
|
- openstack/openstack-chef-specs
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
OpenStack-Helm:
|
OpenStack-Helm:
|
||||||
ptl:
|
ptl:
|
||||||
name: Gage Hugo
|
name: Gage Hugo
|
||||||
|
@ -1835,8 +1782,6 @@ OpenStack-Helm:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/loci
|
- openstack/loci
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
OpenStackAnsible:
|
OpenStackAnsible:
|
||||||
ptl:
|
ptl:
|
||||||
name: Dmitriy Rabotyagov
|
name: Dmitriy Rabotyagov
|
||||||
|
@ -1945,8 +1890,6 @@ OpenStackAnsible:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/openstack-ansible-specs
|
- openstack/openstack-ansible-specs
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
OpenStackSDK:
|
OpenStackSDK:
|
||||||
ptl:
|
ptl:
|
||||||
name: Artem Goncharov
|
name: Artem Goncharov
|
||||||
|
@ -1993,8 +1936,6 @@ OpenStackSDK:
|
||||||
shade:
|
shade:
|
||||||
repos:
|
repos:
|
||||||
- openstack/shade
|
- openstack/shade
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
oslo:
|
oslo:
|
||||||
leadership_type: distributed
|
leadership_type: distributed
|
||||||
irc-channel: openstack-oslo
|
irc-channel: openstack-oslo
|
||||||
|
@ -2145,7 +2086,6 @@ oslo:
|
||||||
- openstack/whereto
|
- openstack/whereto
|
||||||
|
|
||||||
liaisons:
|
liaisons:
|
||||||
tc_members: []
|
|
||||||
release:
|
release:
|
||||||
- name: Hervé Beraud
|
- name: Hervé Beraud
|
||||||
irc: hberaud
|
irc: hberaud
|
||||||
|
@ -2307,9 +2247,6 @@ Puppet OpenStack:
|
||||||
puppet-zaqar:
|
puppet-zaqar:
|
||||||
repos:
|
repos:
|
||||||
- openstack/puppet-zaqar
|
- openstack/puppet-zaqar
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
Quality Assurance:
|
Quality Assurance:
|
||||||
ptl:
|
ptl:
|
||||||
name: Martin Kopec
|
name: Martin Kopec
|
||||||
|
@ -2406,8 +2343,6 @@ Quality Assurance:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/whitebox-tempest-plugin
|
- openstack/whitebox-tempest-plugin
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
rally:
|
rally:
|
||||||
ptl:
|
ptl:
|
||||||
name: Andrey Kurilin
|
name: Andrey Kurilin
|
||||||
|
@ -2433,9 +2368,6 @@ rally:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/performance-docs
|
- openstack/performance-docs
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
Release Management:
|
Release Management:
|
||||||
ptl:
|
ptl:
|
||||||
name: Elod Illes
|
name: Elod Illes
|
||||||
|
@ -2463,8 +2395,6 @@ Release Management:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/specs-cookiecutter
|
- openstack/specs-cookiecutter
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
requirements:
|
requirements:
|
||||||
ptl:
|
ptl:
|
||||||
name: Matthew Thode
|
name: Matthew Thode
|
||||||
|
@ -2481,8 +2411,6 @@ requirements:
|
||||||
requirements:
|
requirements:
|
||||||
repos:
|
repos:
|
||||||
- openstack/requirements
|
- openstack/requirements
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
sahara:
|
sahara:
|
||||||
ptl:
|
ptl:
|
||||||
name: Fossen Qiu
|
name: Fossen Qiu
|
||||||
|
@ -2537,9 +2465,6 @@ sahara:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/sahara-specs
|
- openstack/sahara-specs
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
senlin:
|
senlin:
|
||||||
ptl:
|
ptl:
|
||||||
name: XueFeng Liu
|
name: XueFeng Liu
|
||||||
|
@ -2568,10 +2493,6 @@ senlin:
|
||||||
senlin-tempest-plugin:
|
senlin-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/senlin-tempest-plugin
|
- openstack/senlin-tempest-plugin
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
|
|
||||||
skyline:
|
skyline:
|
||||||
ptl:
|
ptl:
|
||||||
name: Wenxiang Wu
|
name: Wenxiang Wu
|
||||||
|
@ -2594,9 +2515,6 @@ skyline:
|
||||||
skyline-console:
|
skyline-console:
|
||||||
repos:
|
repos:
|
||||||
- openstack/skyline-console
|
- openstack/skyline-console
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
solum:
|
solum:
|
||||||
ptl:
|
ptl:
|
||||||
name: Rong Zhu
|
name: Rong Zhu
|
||||||
|
@ -2628,9 +2546,6 @@ solum:
|
||||||
solum-tempest-plugin:
|
solum-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/solum-tempest-plugin
|
- openstack/solum-tempest-plugin
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
storlets:
|
storlets:
|
||||||
ptl:
|
ptl:
|
||||||
name: Takashi Kajinami
|
name: Takashi Kajinami
|
||||||
|
@ -2647,9 +2562,6 @@ storlets:
|
||||||
storlets:
|
storlets:
|
||||||
repos:
|
repos:
|
||||||
- openstack/storlets
|
- openstack/storlets
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
swift:
|
swift:
|
||||||
ptl:
|
ptl:
|
||||||
name: Tim Burke
|
name: Tim Burke
|
||||||
|
@ -2682,9 +2594,6 @@ swift:
|
||||||
swift-bench:
|
swift-bench:
|
||||||
repos:
|
repos:
|
||||||
- openstack/swift-bench
|
- openstack/swift-bench
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
tacker:
|
tacker:
|
||||||
ptl:
|
ptl:
|
||||||
name: Yasufumi Ogawa
|
name: Yasufumi Ogawa
|
||||||
|
@ -2713,9 +2622,6 @@ tacker:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/tacker-specs
|
- openstack/tacker-specs
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
Telemetry:
|
Telemetry:
|
||||||
ptl:
|
ptl:
|
||||||
name: Matthias Runge
|
name: Matthias Runge
|
||||||
|
@ -2759,9 +2665,6 @@ Telemetry:
|
||||||
telemetry-tempest-plugin:
|
telemetry-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/telemetry-tempest-plugin
|
- openstack/telemetry-tempest-plugin
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
tripleo:
|
tripleo:
|
||||||
ptl:
|
ptl:
|
||||||
name: James Slagle
|
name: James Slagle
|
||||||
|
@ -2891,9 +2794,6 @@ tripleo:
|
||||||
release-management: none
|
release-management: none
|
||||||
repos:
|
repos:
|
||||||
- openstack/tripleo-ha-utils
|
- openstack/tripleo-ha-utils
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
trove:
|
trove:
|
||||||
ptl:
|
ptl:
|
||||||
name: Wu Chunyang
|
name: Wu Chunyang
|
||||||
|
@ -2926,9 +2826,6 @@ trove:
|
||||||
trove-tempest-plugin:
|
trove-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/trove-tempest-plugin
|
- openstack/trove-tempest-plugin
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
venus:
|
venus:
|
||||||
ptl:
|
ptl:
|
||||||
name: Liye Pang
|
name: Liye Pang
|
||||||
|
@ -2962,10 +2859,6 @@ venus:
|
||||||
venus-tempest-plugin:
|
venus-tempest-plugin:
|
||||||
repos:
|
repos:
|
||||||
- openstack/venus-tempest-plugin
|
- openstack/venus-tempest-plugin
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
|
|
||||||
vitrage:
|
vitrage:
|
||||||
ptl:
|
ptl:
|
||||||
name: Eyal Bar-Ilan
|
name: Eyal Bar-Ilan
|
||||||
|
@ -3013,9 +2906,6 @@ vitrage:
|
||||||
xstatic-moment-timezone:
|
xstatic-moment-timezone:
|
||||||
repos:
|
repos:
|
||||||
- openstack/xstatic-moment-timezone
|
- openstack/xstatic-moment-timezone
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
watcher:
|
watcher:
|
||||||
ptl:
|
ptl:
|
||||||
name: chen ke
|
name: chen ke
|
||||||
|
@ -3046,9 +2936,6 @@ watcher:
|
||||||
watcher-dashboard:
|
watcher-dashboard:
|
||||||
repos:
|
repos:
|
||||||
- openstack/watcher-dashboard
|
- openstack/watcher-dashboard
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
winstackers:
|
winstackers:
|
||||||
ptl:
|
ptl:
|
||||||
name: Lucian Petrut
|
name: Lucian Petrut
|
||||||
|
@ -3077,9 +2964,6 @@ winstackers:
|
||||||
compute-hyperv:
|
compute-hyperv:
|
||||||
repos:
|
repos:
|
||||||
- openstack/compute-hyperv
|
- openstack/compute-hyperv
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
zaqar:
|
zaqar:
|
||||||
ptl:
|
ptl:
|
||||||
name: wang hao
|
name: wang hao
|
||||||
|
@ -3115,9 +2999,6 @@ zaqar:
|
||||||
zaqar-ui:
|
zaqar-ui:
|
||||||
repos:
|
repos:
|
||||||
- openstack/zaqar-ui
|
- openstack/zaqar-ui
|
||||||
|
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
zun:
|
zun:
|
||||||
ptl:
|
ptl:
|
||||||
name: Feng Shengqin
|
name: Feng Shengqin
|
||||||
|
@ -3146,5 +3027,3 @@ zun:
|
||||||
zun-ui:
|
zun-ui:
|
||||||
repos:
|
repos:
|
||||||
- openstack/zun-ui
|
- openstack/zun-ui
|
||||||
liaisons:
|
|
||||||
tc_members: []
|
|
||||||
|
|
|
@ -64,29 +64,7 @@ As a TC member, we have two primary ways of communicating.
|
||||||
#. IRC channel:
|
#. IRC channel:
|
||||||
Please also join the ``#openstack-tc`` channel on IRC, and set a notification
|
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
|
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
|
recommend also setting a notification for a string with your name.
|
||||||
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>`
|
|
||||||
|
|
||||||
TC Repos
|
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…
Reference in New Issue