Convert ATC to AC term

TC passed a resolution in 2021[1] to convert the term
ATC to AC and this is not just wording change but also
it change the definition of it which include the AUC also
in AC. Previously ATC and AUC were two different things.

Reflecting the TC resolution in election tooling also.

[1] https://governance.openstack.org/tc/resolutions/20210602-atc-renamed-to-ac.html

Depends-On: https://review.opendev.org/c/openstack/governance/+/893831
Change-Id: Ic0570ae9a2bb2b31538179d3246b4475cdbeac45
This commit is contained in:
Ghanshyam Mann 2023-09-07 11:56:57 -05:00
parent fb6a674adb
commit 7b1887c486
9 changed files with 36 additions and 36 deletions

View File

@ -17,7 +17,7 @@ Things to keep in mind when selecting election dates:
which is "The election is held no later than 3 weeks prior to each
cycle final release date(on or before R-3 week)"
* At least 48 hours in between email deadline and poll start
* Consider extra-atcs approval deadlines
* Consider extra-acs approval deadlines
* Allow at least a week for nomination period
``tox -evenv -- setup-election-config`` can be used to pick some possible dates that need to be
@ -103,10 +103,10 @@ When PTL Candidacy submission ends:
* ``tox -e venv -- template-emails end_nominations``
* When the tag is available, generate ATC rolls, e.g.:
* When the tag is available, generate AC rolls, e.g.:
* ``tox -evenv -- generate-rolls``
* Compare ATC rolls with at least one other election official
* Compare AC rolls with at least one other election official
PTL Election Round

View File

@ -37,9 +37,9 @@ def check_candidate(project_name, email, projects, limit=1, verbose=0):
project_list = [projects[project_name]]
for project in project_list:
for atc in project.get('extra-atcs', []):
if (atc['email'] == email and utils.check_atc_date(atc)):
print("%2d: Valid extra ATC record:\n\t%s" % (found, atc))
for ac in project.get('extra-acs', []):
if (ac['email'] == email and utils.check_ac_date(ac)):
print("%2d: Valid extra AC record:\n\t%s" % (found, ac))
found += 1
if found >= limit:
return found

View File

@ -110,8 +110,8 @@ def usage(argv=sys.argv):
parser.add_argument("-i", "--ignore", help="Account Id numbers to skip",
action='append')
parser.add_argument("-l", "--legacy", help="Path to legacy projects file")
parser.add_argument("-n", "--no-extra-atcs", help='Omit "extra ATCs"',
dest='no_extra_atcs', action='store_true')
parser.add_argument("-n", "--no-extra-acs", help='Omit "extra ACs"',
dest='no_extra_acs', action='store_true')
parser.add_argument("-o", "--outdir", help="Create an output directory")
parser.add_argument("-p", "--projects", help="Path to local projects file")
parser.add_argument("-r", "--ref", help="Specify a Governance refname")

View File

@ -136,13 +136,13 @@ def main(options):
else:
sigs_file = None
# Whether to omit "extra ATCs"
if options.no_extra_atcs:
no_extra_atcs = options.no_extra_atcs
elif 'no-extra-atcs' in config:
no_extra_atcs = config['no-extra-atcs']
# Whether to omit "extra ACs"
if options.no_extra_acs:
no_extra_acs = options.no_extra_acs
elif 'no-extra-acs' in config:
no_extra_acs = config['no-extra-acs']
else:
no_extra_atcs = False
no_extra_acs = False
# Output file directory
if options.outdir:
@ -237,14 +237,14 @@ def main(options):
for sig in sigs_repos:
for repo in sigs_repos[sig]:
if 'sigs' not in gov_projects:
gov_projects['sigs'] = {'deliverables': {}, 'extra-atcs': []}
gov_projects['sigs'] = {'deliverables': {}, 'extra-acs': []}
if sig not in gov_projects['sigs']['deliverables']:
gov_projects['sigs']['deliverables'][sig] = {'repos': []}
gov_projects['sigs']['deliverables'][sig]['repos'].append(
repo['repo'])
extra_atcs = repo.get('extra-atcs', [])
if extra_atcs:
gov_projects['sigs']['extra-atcs'].extend(extra_atcs)
extra_acs = repo.get('extra-acs', [])
if extra_acs:
gov_projects['sigs']['extra-acs'].extend(extra_acs)
# A cache of full repo names existing in Gerrit, used to filter out repos
# listed in governance which don't actually exist
@ -503,12 +503,12 @@ def main(options):
else:
stamp = start.isoformat(sep=' ').split('.')[0]
# Iterate over all extra-atcs entries
if not no_extra_atcs:
# Iterate over all extra-acs entries
if not no_extra_acs:
for project in gov_projects:
for extra_atc in gov_projects[project].get('extra-atcs', []):
name = extra_atc['name']
email = extra_atc['email']
for extra_ac in gov_projects[project].get('extra-acs', []):
name = extra_ac['name']
email = extra_ac['email']
address = normalize_email(email)
if address in all_emails:
owner = all_emails[address]

View File

@ -34,15 +34,15 @@ through to {{ election_end }}. The electorate for the TC election
are the OpenStack Foundation Individual Members who have a code
contribution to one of the official teams over the {{ start_release }} to {{ end_release }}
timeframe, {{ time_frame }}, as well as
any Extra ATCs who are acknowledged by the TC. The electorate for a
any Extra ACs who are acknowledged by the TC. The electorate for a
PTL election are the OpenStack Foundation Individual Members who
have a code contribution over the {{ start_release }} to {{ end_release }} timeframe,
{{ time_frame }}, in a deliverable
repository maintained by the team which the PTL would lead, as
well as the Extra ATCs who are acknowledged by the TC for that
well as the Extra ACs who are acknowledged by the TC for that
specific team. The list of project teams can be found at
https://governance.openstack.org/tc/reference/projects/ and their
individual team pages include lists of corresponding Extra ATCs.
individual team pages include lists of corresponding Extra ACs.
Please find below the timeline:

View File

@ -12,13 +12,13 @@ You are eligible to vote in the TC election if you are a Foundation
individual member[0] that also has committed to any official project
team's deliverable repositories[1] over the {{ time_frame }}
timeframe ({{ start_release }} to {{ end_release }}) or if you are
in the list of extra-atcs[2] for any official project team.
in the list of extra-acs[2] for any official project team.
You are eligible to vote in a PTL election if you are a Foundation
individual member[0] and had a commit in one of that team's
deliverable repositories[1] over the {{ time_frame }} timeframe ({{
start_release }} to {{ end_release }}) or if you are in that team's
list of extra-atcs[2].
list of extra-acs[2].
If you are eligible to vote in an election, you should find your
email with a link to the Condorcet Internet Voting Service (CIVS) page
@ -56,7 +56,7 @@ Happy voting,
[1] The list of the repositories eligible for electoral status:
{{ reference_url }}
[2] Look for the extra-atcs element in [1]
[2] Look for the extra-acs element in [1]
[3] Sign into review.openstack.org: Go to Settings > Contact
Information. Look at the email listed as your preferred email.

View File

@ -21,7 +21,7 @@ directly-elected TC seat.
The election will be held from {{ election_start }} through to {{ election_end }}. The electorate
are the Foundation individual members that are also committers
for one of the official teams[3] over the {{ time_frame }} timeframe ({{ start_release }} to
{{ end_release }}, as well as the extra-ATCs who are acknowledged by the TC[4].
{{ end_release }}, as well as the extra-ACs who are acknowledged by the TC[4].
Please see the website[5] for additional details about this election.
Please find below the timeline:
@ -41,7 +41,7 @@ Thank you,
[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy
[2] https://www.openstack.org/community/members/
[3] https://governance.openstack.org/tc/reference/projects/
[4] https://releases.openstack.org/{{ last_release }}/schedule.html#p-extra-atcs
[4] https://releases.openstack.org/{{ last_release }}/schedule.html#p-extra-acs
[5] https://governance.openstack.org/election/
[6] https://governance.openstack.org/election/#election-officials

View File

@ -11,7 +11,7 @@ You are eligible to vote if you are a Foundation individual
member[1] that also has committed to one of the official project
teams' deliverable repositories[2] over the {{ time_frame }}
timeframe ({{ start_release }} to {{ end_release }}) or if you are
one of the extra-atcs.[3]
one of the extra-acs.[3]
If you are eligible to vote in an election, you should find your
email with a link to the Condorcet Internet Voting Service (CIVS) page
@ -47,7 +47,7 @@ Thank you,
[1] https://www.openstack.org/community/members/
[2] {{ reference_url }}
[3] Look for the extra-atcs element in [2]
[3] Look for the extra-acs element in [2]
[4] Sign into review.openstack.org: Go to Settings > Contact Information. Look
at the email listed as your preferred email. That is where the ballot has
been sent.

View File

@ -234,10 +234,10 @@ def candidate_files(review):
# Governance functions
def check_atc_date(atc):
if 'expires-in' not in atc:
def check_ac_date(ac):
if 'expires-in' not in ac:
return False
expires_in = datetime.datetime.strptime(atc['expires-in'], '%B %Y')
expires_in = datetime.datetime.strptime(ac['expires-in'], '%B %Y')
expires_in = expires_in.replace(tzinfo=pytz.utc)
return conf['timeframe']['end'] < expires_in