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
|
which is "The election is held no later than 3 weeks prior to each
|
||||||
cycle final release date(on or before ‘R-3’ week)"
|
cycle final release date(on or before ‘R-3’ week)"
|
||||||
* At least 48 hours in between email deadline and poll start
|
* 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
|
* 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
|
``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``
|
* ``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``
|
* ``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
|
PTL Election Round
|
||||||
|
@ -37,9 +37,9 @@ def check_candidate(project_name, email, projects, limit=1, verbose=0):
|
|||||||
project_list = [projects[project_name]]
|
project_list = [projects[project_name]]
|
||||||
|
|
||||||
for project in project_list:
|
for project in project_list:
|
||||||
for atc in project.get('extra-atcs', []):
|
for ac in project.get('extra-acs', []):
|
||||||
if (atc['email'] == email and utils.check_atc_date(atc)):
|
if (ac['email'] == email and utils.check_ac_date(ac)):
|
||||||
print("%2d: Valid extra ATC record:\n\t%s" % (found, atc))
|
print("%2d: Valid extra AC record:\n\t%s" % (found, ac))
|
||||||
found += 1
|
found += 1
|
||||||
if found >= limit:
|
if found >= limit:
|
||||||
return found
|
return found
|
||||||
|
@ -110,8 +110,8 @@ def usage(argv=sys.argv):
|
|||||||
parser.add_argument("-i", "--ignore", help="Account Id numbers to skip",
|
parser.add_argument("-i", "--ignore", help="Account Id numbers to skip",
|
||||||
action='append')
|
action='append')
|
||||||
parser.add_argument("-l", "--legacy", help="Path to legacy projects file")
|
parser.add_argument("-l", "--legacy", help="Path to legacy projects file")
|
||||||
parser.add_argument("-n", "--no-extra-atcs", help='Omit "extra ATCs"',
|
parser.add_argument("-n", "--no-extra-acs", help='Omit "extra ACs"',
|
||||||
dest='no_extra_atcs', action='store_true')
|
dest='no_extra_acs', action='store_true')
|
||||||
parser.add_argument("-o", "--outdir", help="Create an output directory")
|
parser.add_argument("-o", "--outdir", help="Create an output directory")
|
||||||
parser.add_argument("-p", "--projects", help="Path to local projects file")
|
parser.add_argument("-p", "--projects", help="Path to local projects file")
|
||||||
parser.add_argument("-r", "--ref", help="Specify a Governance refname")
|
parser.add_argument("-r", "--ref", help="Specify a Governance refname")
|
||||||
|
@ -136,13 +136,13 @@ def main(options):
|
|||||||
else:
|
else:
|
||||||
sigs_file = None
|
sigs_file = None
|
||||||
|
|
||||||
# Whether to omit "extra ATCs"
|
# Whether to omit "extra ACs"
|
||||||
if options.no_extra_atcs:
|
if options.no_extra_acs:
|
||||||
no_extra_atcs = options.no_extra_atcs
|
no_extra_acs = options.no_extra_acs
|
||||||
elif 'no-extra-atcs' in config:
|
elif 'no-extra-acs' in config:
|
||||||
no_extra_atcs = config['no-extra-atcs']
|
no_extra_acs = config['no-extra-acs']
|
||||||
else:
|
else:
|
||||||
no_extra_atcs = False
|
no_extra_acs = False
|
||||||
|
|
||||||
# Output file directory
|
# Output file directory
|
||||||
if options.outdir:
|
if options.outdir:
|
||||||
@ -237,14 +237,14 @@ def main(options):
|
|||||||
for sig in sigs_repos:
|
for sig in sigs_repos:
|
||||||
for repo in sigs_repos[sig]:
|
for repo in sigs_repos[sig]:
|
||||||
if 'sigs' not in gov_projects:
|
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']:
|
if sig not in gov_projects['sigs']['deliverables']:
|
||||||
gov_projects['sigs']['deliverables'][sig] = {'repos': []}
|
gov_projects['sigs']['deliverables'][sig] = {'repos': []}
|
||||||
gov_projects['sigs']['deliverables'][sig]['repos'].append(
|
gov_projects['sigs']['deliverables'][sig]['repos'].append(
|
||||||
repo['repo'])
|
repo['repo'])
|
||||||
extra_atcs = repo.get('extra-atcs', [])
|
extra_acs = repo.get('extra-acs', [])
|
||||||
if extra_atcs:
|
if extra_acs:
|
||||||
gov_projects['sigs']['extra-atcs'].extend(extra_atcs)
|
gov_projects['sigs']['extra-acs'].extend(extra_acs)
|
||||||
|
|
||||||
# A cache of full repo names existing in Gerrit, used to filter out repos
|
# A cache of full repo names existing in Gerrit, used to filter out repos
|
||||||
# listed in governance which don't actually exist
|
# listed in governance which don't actually exist
|
||||||
@ -503,12 +503,12 @@ def main(options):
|
|||||||
else:
|
else:
|
||||||
stamp = start.isoformat(sep=' ').split('.')[0]
|
stamp = start.isoformat(sep=' ').split('.')[0]
|
||||||
|
|
||||||
# Iterate over all extra-atcs entries
|
# Iterate over all extra-acs entries
|
||||||
if not no_extra_atcs:
|
if not no_extra_acs:
|
||||||
for project in gov_projects:
|
for project in gov_projects:
|
||||||
for extra_atc in gov_projects[project].get('extra-atcs', []):
|
for extra_ac in gov_projects[project].get('extra-acs', []):
|
||||||
name = extra_atc['name']
|
name = extra_ac['name']
|
||||||
email = extra_atc['email']
|
email = extra_ac['email']
|
||||||
address = normalize_email(email)
|
address = normalize_email(email)
|
||||||
if address in all_emails:
|
if address in all_emails:
|
||||||
owner = all_emails[address]
|
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
|
are the OpenStack Foundation Individual Members who have a code
|
||||||
contribution to one of the official teams over the {{ start_release }} to {{ end_release }}
|
contribution to one of the official teams over the {{ start_release }} to {{ end_release }}
|
||||||
timeframe, {{ time_frame }}, as well as
|
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
|
PTL election are the OpenStack Foundation Individual Members who
|
||||||
have a code contribution over the {{ start_release }} to {{ end_release }} timeframe,
|
have a code contribution over the {{ start_release }} to {{ end_release }} timeframe,
|
||||||
{{ time_frame }}, in a deliverable
|
{{ time_frame }}, in a deliverable
|
||||||
repository maintained by the team which the PTL would lead, as
|
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
|
specific team. The list of project teams can be found at
|
||||||
https://governance.openstack.org/tc/reference/projects/ and their
|
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:
|
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
|
individual member[0] that also has committed to any official project
|
||||||
team's deliverable repositories[1] over the {{ time_frame }}
|
team's deliverable repositories[1] over the {{ time_frame }}
|
||||||
timeframe ({{ start_release }} to {{ end_release }}) or if you are
|
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
|
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
|
individual member[0] and had a commit in one of that team's
|
||||||
deliverable repositories[1] over the {{ time_frame }} timeframe ({{
|
deliverable repositories[1] over the {{ time_frame }} timeframe ({{
|
||||||
start_release }} to {{ end_release }}) or if you are in that team's
|
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
|
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
|
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:
|
[1] The list of the repositories eligible for electoral status:
|
||||||
{{ reference_url }}
|
{{ 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
|
[3] Sign into review.openstack.org: Go to Settings > Contact
|
||||||
Information. Look at the email listed as your preferred email.
|
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
|
The election will be held from {{ election_start }} through to {{ election_end }}. The electorate
|
||||||
are the Foundation individual members that are also committers
|
are the Foundation individual members that are also committers
|
||||||
for one of the official teams[3] over the {{ time_frame }} timeframe ({{ start_release }} to
|
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 see the website[5] for additional details about this election.
|
||||||
Please find below the timeline:
|
Please find below the timeline:
|
||||||
@ -41,7 +41,7 @@ Thank you,
|
|||||||
[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy
|
[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy
|
||||||
[2] https://www.openstack.org/community/members/
|
[2] https://www.openstack.org/community/members/
|
||||||
[3] https://governance.openstack.org/tc/reference/projects/
|
[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/
|
[5] https://governance.openstack.org/election/
|
||||||
[6] https://governance.openstack.org/election/#election-officials
|
[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
|
member[1] that also has committed to one of the official project
|
||||||
teams' deliverable repositories[2] over the {{ time_frame }}
|
teams' deliverable repositories[2] over the {{ time_frame }}
|
||||||
timeframe ({{ start_release }} to {{ end_release }}) or if you are
|
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
|
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
|
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/
|
[1] https://www.openstack.org/community/members/
|
||||||
[2] {{ reference_url }}
|
[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
|
[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
|
at the email listed as your preferred email. That is where the ballot has
|
||||||
been sent.
|
been sent.
|
||||||
|
@ -234,10 +234,10 @@ def candidate_files(review):
|
|||||||
|
|
||||||
|
|
||||||
# Governance functions
|
# Governance functions
|
||||||
def check_atc_date(atc):
|
def check_ac_date(ac):
|
||||||
if 'expires-in' not in atc:
|
if 'expires-in' not in ac:
|
||||||
return False
|
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)
|
expires_in = expires_in.replace(tzinfo=pytz.utc)
|
||||||
return conf['timeframe']['end'] < expires_in
|
return conf['timeframe']['end'] < expires_in
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user