Remove the tags framework (final part)

This commit removes the last tags of stable policy
and rest all tags have been already removed by
- https://review.opendev.org/c/openstack/governance/+/822900
- https://review.opendev.org/c/openstack/governance/+/830478
- https://review.opendev.org/c/openstack/governance/+/834327

Below patch move the stable policy tag project list
to stable policy doc in project team guide
- https://review.opendev.org/c/openstack/project-team-guide/+/834796

Release scripts has also been updated to remove the tag dependency
- https://review.opendev.org/c/openstack/releases/+/829014/2
- https://review.opendev.org/c/openstack/releases/+/834066/1
- https://review.opendev.org/c/openstack/releases/+/830084

Co-Authored-By: Radosław Piliszek <radoslaw.piliszek@gmail.com>
Change-Id: Iae38ecb7cdc4fd2946675022cb0530e90e342fdd
This commit is contained in:
Ghanshyam Mann 2022-03-22 17:27:44 -05:00 committed by Radosław Piliszek
parent 2bfa1b7996
commit 3f9d2fb0ec
8 changed files with 5 additions and 375 deletions

View File

@ -1,93 +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.
"""Show information about tagged projects."""
from collections import defaultdict
from docutils import nodes
from docutils.parsers import rst
from docutils import statemachine
from sphinx.util import logging
from sphinx.util.nodes import nested_parse_with_titles
import projects
LOG = logging.getLogger(__name__)
_projects_by_tag = {}
class TaggedProjectsDirective(rst.Directive):
"""List the projects tagged with the given tag."""
has_content = True
def run(self):
tagname = ' '.join(self.content)
LOG.info('building list of projects tagged %r' % tagname)
if not tagname:
error = self.state_machine.reporter.error(
'No tagname in tagged-projects directive',
nodes.literal_block(self.block_text, self.block_text),
line=self.lineno)
return [error]
# Build the view of the data to be parsed for rendering.
result = statemachine.ViewList()
project_data = _projects_by_tag.get(tagname)
source_name = '<' + __name__ + '>'
if not project_data:
result.append(
'.. note:: No projects are using %s, yet.' % tagname,
source_name,
)
else:
team_deliverables = defaultdict(list)
for team_name, deliverable in project_data:
team = projects.slugify(team_name)
if deliverable is None:
team_deliverables[team] = []
else:
team_deliverables[team].append(deliverable)
for team in sorted(team_deliverables, key=lambda x: x.lower()):
line = '- :ref:`project-%s`%s %s' % (
team,
':' if team_deliverables[team] else '',
', '.join(team_deliverables[team]))
result.append(line, source_name)
# Parse what we have into a new section.
node = nodes.section()
node.document = self.state.document
nested_parse_with_titles(self.state, result, node)
return node.children
def _build_projects_by_tag():
for proj_name, info in projects.get_project_data().items():
for tag in info.get('tags', []):
li = _projects_by_tag.setdefault(tag, [])
li.append((proj_name, None))
for name, deliverable in info.get('deliverables', {}).items():
for tag in deliverable.get('tags', []):
li = _projects_by_tag.setdefault(tag, [])
li.append((proj_name, name))
def setup(app):
LOG.info('loading tags extension')
_build_projects_by_tag()
app.add_directive('tagged-projects', TaggedProjectsDirective)

View File

@ -123,13 +123,6 @@ def _team_to_rst(name, info):
for repo in deliverable.get('repos', [])
)
yield ''
tags = deliverable.get('tags', [])
if tags:
yield ':Tags:'
yield ''
for tag in tags:
yield ' - :ref:`tag-%s`' % tag
yield ''
else:
yield 'None'
yield ''

View File

@ -37,7 +37,6 @@ extensions = [
'members',
'projects',
'teams',
'tags',
'tc_liaisons',
'badges',
'page_context',

View File

@ -62,10 +62,6 @@ class Deliverable(object):
for rn in self.data.get('repos', [])
}
@property
def tags(self):
return set(self.data.get('tags', []))
class Repository(object):
def __init__(self, name, deliverable):

View File

@ -104,10 +104,6 @@ additionalProperties:
pattern: "^[^/]+/[^/]+$"
minItems: 1
uniqueItems: true
tags:
type: "array"
items:
type: "string"
release-management:
type: "string"
enum:

View File

@ -46,8 +46,6 @@ barbican:
barbican:
repos:
- openstack/barbican
tags:
- stable:follows-policy
ansible-role-atos-hsm:
repos:
- openstack/ansible-role-atos-hsm
@ -123,8 +121,6 @@ cinder:
cinder:
repos:
- openstack/cinder
tags:
- stable:follows-policy
cinder-specs:
release-management: none
repos:
@ -135,23 +131,15 @@ cinder:
cinderlib:
repos:
- openstack/cinderlib
tags:
- stable:follows-policy
os-brick:
repos:
- openstack/os-brick
tags:
- stable:follows-policy
python-brick-cinderclient-ext:
repos:
- openstack/python-brick-cinderclient-ext
tags:
- stable:follows-policy
python-cinderclient:
repos:
- openstack/python-cinderclient
tags:
- stable:follows-policy
rbd-iscsi-client:
repos:
- openstack/rbd-iscsi-client
@ -239,13 +227,9 @@ designate:
designate:
repos:
- openstack/designate
tags:
- stable:follows-policy
designate-dashboard:
repos:
- openstack/designate-dashboard
tags:
- stable:follows-policy
designate-specs:
release-management: none
repos:
@ -256,8 +240,6 @@ designate:
python-designateclient:
repos:
- openstack/python-designateclient
tags:
- stable:follows-policy
liaisons:
tc_members: [jungleboyj, diablo_rojo]
ec2-api:
@ -333,8 +315,6 @@ glance:
glance:
repos:
- openstack/glance
tags:
- stable:follows-policy
glance-specs:
release-management: none
repos:
@ -345,13 +325,9 @@ glance:
glance-store:
repos:
- openstack/glance_store
tags:
- stable:follows-policy
python-glanceclient:
repos:
- openstack/python-glanceclient
tags:
- stable:follows-policy
liaisons:
tc_members: [dansmith, jungleboyj]
heat:
@ -372,8 +348,6 @@ heat:
heat:
repos:
- openstack/heat
tags:
- stable:follows-policy
heat-agents:
repos:
- openstack/heat-agents
@ -404,8 +378,6 @@ heat:
python-heatclient:
repos:
- openstack/python-heatclient
tags:
- stable:follows-policy
tosca-parser:
repos:
- openstack/tosca-parser
@ -426,8 +398,6 @@ horizon:
horizon:
repos:
- openstack/horizon
tags:
- stable:follows-policy
ui-cookiecutter:
release-management: none
repos:
@ -537,13 +507,9 @@ ironic:
ironic:
repos:
- openstack/ironic
tags:
- stable:follows-policy
ironic-inspector:
repos:
- openstack/ironic-inspector
tags:
- stable:follows-policy
ironic-inspector-specs:
release-management: none
repos:
@ -551,16 +517,12 @@ ironic:
ironic-lib:
repos:
- openstack/ironic-lib
tags:
- stable:follows-policy
ironic-prometheus-exporter:
repos:
- openstack/ironic-prometheus-exporter
ironic-python-agent:
repos:
- openstack/ironic-python-agent
tags:
- stable:follows-policy
ironic-python-agent-builder:
repos:
- openstack/ironic-python-agent-builder
@ -590,13 +552,9 @@ ironic:
python-ironic-inspector-client:
repos:
- openstack/python-ironic-inspector-client
tags:
- stable:follows-policy
python-ironicclient:
repos:
- openstack/python-ironicclient
tags:
- stable:follows-policy
sushy:
repos:
- openstack/sushy
@ -627,8 +585,6 @@ keystone:
keystone:
repos:
- openstack/keystone
tags:
- stable:follows-policy
keystone-specs:
release-management: none
repos:
@ -639,23 +595,15 @@ keystone:
keystoneauth:
repos:
- openstack/keystoneauth
tags:
- stable:follows-policy
keystonemiddleware:
repos:
- openstack/keystonemiddleware
tags:
- stable:follows-policy
pycadf:
repos:
- openstack/pycadf
tags:
- stable:follows-policy
python-keystoneclient:
repos:
- openstack/python-keystoneclient
tags:
- stable:follows-policy
ldappool:
repos:
- openstack/ldappool
@ -783,8 +731,6 @@ manila:
manila:
repos:
- openstack/manila
tags:
- stable:follows-policy
manila-image-elements:
repos:
- openstack/manila-image-elements
@ -992,13 +938,9 @@ murano:
murano:
repos:
- openstack/murano
tags:
- stable:follows-policy
murano-agent:
repos:
- openstack/murano-agent
tags:
- stable:follows-policy
murano-apps:
release-management: none
repos:
@ -1006,8 +948,6 @@ murano:
murano-dashboard:
repos:
- openstack/murano-dashboard
tags:
- stable:follows-policy
murano-pkg-check:
repos:
- openstack/murano-pkg-check
@ -1018,8 +958,6 @@ murano:
python-muranoclient:
repos:
- openstack/python-muranoclient
tags:
- stable:follows-policy
yaql:
repos:
- openstack/yaql
@ -1067,23 +1005,15 @@ neutron:
neutron-fwaas:
repos:
- openstack/neutron-fwaas
tags:
- stable:follows-policy
neutron:
repos:
- openstack/neutron
tags:
- stable:follows-policy
neutron-dynamic-routing:
repos:
- openstack/neutron-dynamic-routing
tags:
- stable:follows-policy
neutron-lib:
repos:
- openstack/neutron-lib
tags:
- stable:follows-policy
neutron-specs:
release-management: none
repos:
@ -1106,8 +1036,6 @@ neutron:
neutron-vpnaas:
repos:
- openstack/neutron-vpnaas
tags:
- stable:follows-policy
neutron-vpnaas-dashboard:
repos:
- openstack/neutron-vpnaas-dashboard
@ -1135,8 +1063,6 @@ nova:
nova:
repos:
- openstack/nova
tags:
- stable:follows-policy
nova-specs:
release-management: none
repos:
@ -1144,8 +1070,6 @@ nova:
python-novaclient:
repos:
- openstack/python-novaclient
tags:
- stable:follows-policy
os-vif:
repos:
- openstack/os-vif
@ -1180,26 +1104,18 @@ octavia:
octavia:
repos:
- openstack/octavia
tags:
- stable:follows-policy
octavia-dashboard:
repos:
- openstack/octavia-dashboard
tags:
- stable:follows-policy
octavia-tempest-plugin:
repos:
- openstack/octavia-tempest-plugin
python-octaviaclient:
repos:
- openstack/python-octaviaclient
tags:
- stable:follows-policy
octavia-lib:
repos:
- openstack/octavia-lib
tags:
- stable:follows-policy
liaisons:
tc_members:
- gmann
@ -2110,13 +2026,9 @@ oslo:
automaton:
repos:
- openstack/automaton
tags:
- stable:follows-policy
castellan:
repos:
- openstack/castellan
tags:
- stable:follows-policy
cookiecutter:
release-management: none
repos:
@ -2161,26 +2073,18 @@ oslo:
oslo.cache:
repos:
- openstack/oslo.cache
tags:
- stable:follows-policy
oslo.concurrency:
repos:
- openstack/oslo.concurrency
oslo.config:
repos:
- openstack/oslo.config
tags:
- stable:follows-policy
oslo.context:
repos:
- openstack/oslo.context
tags:
- stable:follows-policy
oslo.db:
repos:
- openstack/oslo.db
tags:
- stable:follows-policy
oslo.i18n:
repos:
- openstack/oslo.i18n
@ -2193,26 +2097,18 @@ oslo:
oslo.messaging:
repos:
- openstack/oslo.messaging
tags:
- stable:follows-policy
oslo.metrics:
repos:
- openstack/oslo.metrics
oslo.middleware:
repos:
- openstack/oslo.middleware
tags:
- stable:follows-policy
oslo.policy:
repos:
- openstack/oslo.policy
tags:
- stable:follows-policy
oslo.privsep:
repos:
- openstack/oslo.privsep
tags:
- stable:follows-policy
oslo.reports:
repos:
- openstack/oslo.reports
@ -2222,13 +2118,9 @@ oslo:
oslo.serialization:
repos:
- openstack/oslo.serialization
tags:
- stable:follows-policy
oslo.service:
repos:
- openstack/oslo.service
tags:
- stable:follows-policy
oslo.tools:
release-management: none
repos:
@ -2236,23 +2128,15 @@ oslo:
oslo.upgradecheck:
repos:
- openstack/oslo.upgradecheck
tags:
- stable:follows-policy
oslo.utils:
repos:
- openstack/oslo.utils
tags:
- stable:follows-policy
oslo.versionedobjects:
repos:
- openstack/oslo.versionedobjects
tags:
- stable:follows-policy
oslo.vmware:
repos:
- openstack/oslo.vmware
tags:
- stable:follows-policy
oslotest:
repos:
- openstack/oslotest
@ -2268,8 +2152,6 @@ oslo:
stevedore:
repos:
- openstack/stevedore
tags:
- stable:follows-policy
taskflow:
repos:
- openstack/taskflow
@ -2649,58 +2531,36 @@ sahara:
python-saharaclient:
repos:
- openstack/python-saharaclient
tags:
- stable:follows-policy
sahara:
repos:
- openstack/sahara
tags:
- stable:follows-policy
sahara-dashboard:
repos:
- openstack/sahara-dashboard
tags:
- stable:follows-policy
sahara-extra:
repos:
- openstack/sahara-extra
tags:
- stable:follows-policy
sahara-image-elements:
repos:
- openstack/sahara-image-elements
tags:
- stable:follows-policy
sahara-plugin-ambari:
repos:
- openstack/sahara-plugin-ambari
tags:
- stable:follows-policy
sahara-plugin-cdh:
repos:
- openstack/sahara-plugin-cdh
tags:
- stable:follows-policy
sahara-plugin-mapr:
repos:
- openstack/sahara-plugin-mapr
tags:
- stable:follows-policy
sahara-plugin-spark:
repos:
- openstack/sahara-plugin-spark
tags:
- stable:follows-policy
sahara-plugin-storm:
repos:
- openstack/sahara-plugin-storm
tags:
- stable:follows-policy
sahara-plugin-vanilla:
repos:
- openstack/sahara-plugin-vanilla
tags:
- stable:follows-policy
sahara-tests:
repos:
- openstack/sahara-tests
@ -2856,13 +2716,9 @@ swift:
python-swiftclient:
repos:
- openstack/python-swiftclient
tags:
- stable:follows-policy
swift:
repos:
- openstack/swift
tags:
- stable:follows-policy
swift-bench:
repos:
- openstack/swift-bench
@ -3294,8 +3150,6 @@ zaqar:
zaqar:
repos:
- openstack/zaqar
tags:
- stable:follows-policy
zaqar-specs:
release-management: none
repos:

View File

@ -2,14 +2,9 @@
Tags
======
The tags framework is currently being removed. This index page is left
to serve as a source of still-useful information which will be later
refactored.
.. warning::
Current tags
============
.. toctree::
:maxdepth: 1
stable_follows-policy
The tags framework has been removed and we no longer maintain it. Instead,
we encourage projects to continue following the policies they were adhering
to with the tag framework, for example, deprecation, upgrade, stable branch,
VMT, etc.

View File

@ -1,110 +0,0 @@
..
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
.. _`tag-stable:follows-policy`:
=======================
stable:follows-policy
=======================
Downstream users of OpenStack (users, but also packagers and lifecycle
management tools) need to know whether they can count on a source
of reliable bugfixes for a given component.
This tag indicates that a project team maintains stable branches for a given
deliverable, and that those stable branches are maintained following the common
`Stable branch policy`_, as defined by the Stable branch maintenance team.
Application to current deliverables
===================================
.. tagged-projects:: stable:follows-policy
Rationale
=========
All OpenStack project teams can create stable branches, with the
name of their choice. However, some of those branches do not follow the
`Stable branch policy`_: some approve backports that modify the behavior
of the software, some backport new features, some do not actively backport
significant bugfixes, some don't monitor proposed backports, or monitor
the CI system on their stable branches...
That creates confusion for packagers and deployers of our software, which
no longer know what to expect from a stable branch. Having stable branches
is no longer a guarantee of an up-to-date source of safe fixes.
To replace it, this tag is granted by the stable branch maintenance team only
to deliverables which have stable branches maintained following the common
`Stable branch policy`_. This lets downstream users easily determine which
projects adhere to the common rules, and expose what the common rules are to
a wider audience. As a side-effect, it encourages more project teams to
follow the policy.
Requirements
============
The tag can only be applied to software components of an OpenStack cloud
(openstack, openstack-operations on the map) and associated libraries
(openstack-libs). It is not meant be applied to SDKs (openstack-user)
or deployment tools (openstack-lifecyclemanagement).
Deliverables must follow the `Stable branch policy`_ in all currently active
stable branches.
.. _application-process:
Tag application process
=======================
Proposals to add or remove this tag must be reviewed by the
`Stable Branch Maintenance team`_ prior to final approval by
the Technical Committee.
Deprecation
===========
The ``stable:follows-policy`` tag may be removed from deliverables at any
time, when the Stable Branch Maintenance team considers that the deliverable
repeatedly violated the `Stable branch policy`_.
The ``stable:follows-policy`` tag is applicable to all currently active stable
branches. The removing the tag will also be applicable for all currently active
stable branches, meaning that projects that have removed the tag no longer
needs to follow `Stable branch policy`_ for any of the active stable branches.
Once the tag is removed, it can be re-obtained as per the
:ref:`reobtaining-tag` process.
.. _reobtaining-tag:
Re-obtaining the Tag
====================
Re-obtaining the ``stable:follows-policy`` tag back is always possible and can
be proposed with the agreement of `Stable Branch Maintenance team`_. Because
this tag is applicable per repository not per branch, any project not having
this tag can backports the unstable changes to any of the currently active
stable branches.
Re-obtaining the tag will follow the same process as obtaining tag from fresh,
meaning that all active stable branches follow `Stable branch policy`_. If the
branch that the tag was removed is still in active stable branches it means
project is not following the `Stable branch policy`_ in all active stable
branches.
As summary, the project can be applicable to re-obtain the tag once the branch
that the tag was removed from is EOL.
The tag re-obtain application process is the same as described in
:ref:`application-process`.
.. _Stable branch policy: https://docs.openstack.org/project-team-guide/stable-branches.html
.. _Stable Branch Maintenance team: https://review.opendev.org/#/admin/groups/530,members