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:
parent
fb6a674adb
commit
7b1887c486
@ -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
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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]
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user