Add close-election utility and archive rendering

* close-election [ptl|tc] generate a yaml archive in doc/source
* docs render the results pages based on the archive
* add documentation about the whole election officials process

Change-Id: I8f737f33befc1e8af52dac9c059f73e2874eb5f8
This commit is contained in:
Tristan Cacqueray 2016-09-27 03:52:07 +00:00
parent 045f550d5e
commit 72e0775ae7
12 changed files with 772 additions and 507 deletions

2
.gitignore vendored
View File

@ -14,3 +14,5 @@ candidates/events.rst
.projects*yaml .projects*yaml
.projects*.pkl .projects*.pkl
.testrepository .testrepository
doc/source/archive_toc.rst
doc/source/*/*.rst

View File

@ -1,13 +1,112 @@
==================
openstack/election
==================
This repository contains OpenStack Elections reference documents This repository contains OpenStack Elections reference documents
and track candidate lists and elections' results. and tooling to run elections.
Directory structure:
candidates/ Election officials process
<OpenStack codename>/ e.g mitaka (case matters) ==========================
<Project>/ e.g Nova (case matters)
<Candidate_Name>.txt Preparation
TC/ -----------
<Candidate_Name>.txt
results/ A month before election starts:
Only edititable by the Election officials
* Prepare new election, e.g.:
* tox -evenv -- new-election.py pike
* Edit elections details (timeline, cycle timeframe):
* edit configuration.yaml
* Update index.rst to include ptl.rst
* Commit to update website
A couple of weeks before election starts
* Send 'First announce'
PTL Candidacy round
-------------------
When PTL Candidacy start
* Send 'Opening PTL candidacy round'
During the PTL Candidacy round:
* Validate candidacy, e.g.:
* tox -evenv -- check-new-candidacy, or
* tox -evenv -- check-candidacy change_id
* To +2 a candidate:
* check commit link is indeed valid
* check filename is ircname
* cursory check the candidacy statement
* To +Workflow, checks the previous +2 details, find another commits using --limit 5 (optionals)
* Check candidate list and fixes badly generated name using the exception.txt file
A couple of days before the candidacy submission ends:
* Render statistics and send 'Motivation call for PTL candidacy round', e.g.:
* tox -evenv -- render-statistics
When PTL Candidacy submission ends:
* Send 'PTL nomination ending'
PTL Election round
------------------
When PreferredEmailDeadLine is reached:
* Generate ATC rolls, e.g.:
* ./tools/generate-rolls.sh
When PTL Election begins:
* Create CIVS page ( https://wiki.openstack.org/wiki/Election_Officiating_Guidelines#Running_the_election_itself )
* Upload rolls
* Send 'PTL election opening'
A couple of days before the PTL Election ends:
* Send 'PTL vote motivation call'
When PTL Election ends:
* close the election and udpate the results:
* tox -evenv -- close-election ptl
* edit doc/sources/pike/ptl.yaml
* update index.rst to include tc.rst instead of ptl.rst
* Commit the change and review the results
* Send 'PTL results'
TC Candidacy round
------------------
When TC Candidacy starts:
* Send 'TC Candidacy Opening'
During the TC Candidacy round:
* To +2 a candidate:
* check candidate profile using http://www.openstack.org/community/members/
* check filename is ircname
* cursory check the candidacy statement
* To +Workflow, check the previous +2 details
A couple of days before the candidacy submission ends:
* Send 'Motivation call for TC Candidacy round'
When TC Candidacy submission ends:
* Send 'TC nomiation ending'
TC Election round
-----------------
* Create CIVS page
* Upload rolls
* Send 'TC election opening'
A couple of days before the TC Election ends:
* Send 'TC vote motivation call'
When TC Election ends:
* close the election and update the results:
* tox -e venv -- close-election tc
* edit doc/source/pike/tc.yaml
* Commit the change and review the results
* Send 'TC results'

View File

@ -15,6 +15,7 @@
import os import os
import urllib import urllib
import yaml
from jinja2 import FileSystemLoader from jinja2 import FileSystemLoader
from jinja2.environment import Environment from jinja2.environment import Environment
@ -44,11 +45,54 @@ def render_list(list_type, candidates_list):
) )
def build_archive(serie, list_type):
db_file = os.path.join(".", "doc", "source", serie, "%s.yaml" % list_type)
if not os.path.isfile(db_file):
return
db = yaml.safe_load(open(db_file))
# Check for appointed or incumbent footnote
db['tags'] = {}
for project in db['projects']:
for candidate in db['candidates'][project]:
if candidate['elected'] == 'TC-APPOINTED':
db['tags']['TC-APPOINTED'] = True
elif candidate['elected'] == 'INCUMBENT-PTL':
db['tags']['INCUMBENT-PTL'] = True
output = os.path.join(".", "doc", "source", serie, "%s.rst" % list_type)
template_name = "%s_archive.jinja" % list_type
template_dir = os.path.join(".", "doc", "source", "_exts")
with open(output, "w") as out:
out.write(
render_template(
template_name,
db,
template_dir=template_dir
).encode('utf-8')
)
return True
def build_lists(app): def build_lists(app):
# Current candidates
candidates_list = utils.build_candidates_list() candidates_list = utils.build_candidates_list()
render_list("ptl", candidates_list) render_list("ptl", candidates_list)
render_list("tc", candidates_list) render_list("tc", candidates_list)
# Archived elections
previous_toc = [
".. toctree::",
" :maxdepth: 1",
" :titlesonly:",
""
]
for previous in utils.PAST_ELECTIONS:
if build_archive(previous, "ptl"):
previous_toc.append(" %s/ptl.rst" % previous)
if build_archive(previous, "tc"):
previous_toc.append(" %s/tc.rst" % previous)
toc = os.path.join(".", "doc", "source", "archive_toc.rst")
open(toc, "w").write("\n".join(previous_toc))
def setup(app): def setup(app):
app.info('loading candidates extension') app.info('loading candidates extension')

View File

@ -0,0 +1,41 @@
======================
{{ election.capitalize() }} PTL
======================
{% for project in projects %}
* {{ project.replace('_', ' ') }}
{% for candidate in candidates[project] %}{% if candidate['elected'] and 'url' in candidate %}
* `{{ candidate['fullname'] }} ({{ candidate['ircname'] }}) <{{ candidate['url'] }}>`_
{% elif candidate['elected'] %}
* {{ candidate['fullname'] }} ({{ candidate['ircname'] }}) {% if candidate['elected'] == 'INCUMBENT-PTL' %}[#IncumbentPTL]_{% else %}[#TCAppointed]_{% endif %}
{% endif %}{% endfor %}
{% endfor %}
{% if 'TC-APPOINTED' in tags %}
.. [#TCAppointed] By TC Appointment
{% endif %}
{% if 'INCUMBENT-PTL' in tags %}
.. [#IncumbentPTL] Incumbent PTL
{% endif %}
Results
-------
{% for project in projects %}{% if project in elections_results %}
* `{{ project }} <{{ elections_results[project] }}>`_
{% endif %}{% endfor %}
{{ election.capitalize() }} PTL Candidates
======================
{% for project in projects %}
* {{ project.replace('_', ' ') }}
{% for candidate in candidates[project] %}{% if 'url' in candidate %}
* `{{ candidate['fullname'] }} ({{ candidate['ircname'] }}) <{{ candidate['url'] }}>`_
{% endif %}{% endfor %}
{% endfor %}

View File

@ -0,0 +1,16 @@
======================
{{ election.capitalize() }} elected TC members
======================
{% for candidate in candidates['TC'] %}{% if candidate['elected'] %}
* `{{ candidate['fullname'] }} ({{ candidate['ircname'] }}) <{{ candidate['url'] }}>`_
{% endif %}{% endfor %}
Results
-------
* `TC <{{ elections_results['TC'] }}>`_
{{ election.capitalize() }} TC Candidates
======================
{% for candidate in candidates['TC'] %}
* `{{ candidate['fullname'] }} ({{ candidate['ircname'] }}) <{{ candidate['url'] }}>`_
{% endfor %}

View File

@ -17,10 +17,12 @@ Below is the official list of candidates for the current round.
.. TODO: Change from ptl.rst to tc.rst when TC rounds starts .. TODO: Change from ptl.rst to tc.rst when TC rounds starts
.. include:: ../../candidates/tc.rst .. include:: ../../candidates/tc.rst
.. include:: ocata_ptl_results.rst
.. TODO: Adds TC Results and a link to `TC Candidates list`_ when TC candidacies are over Previous elections
.. TODO: Adds PTL Results and a link to `PTL Candidates list`_ when PTL candidacies are over ==================
.. include:: archive_toc.rst
Election Officials Election Officials
================== ==================
@ -149,9 +151,6 @@ The candidacy is then confirmed by elections officials through gerrit vote.
See above `How to submit a candidacy`_ documentation. See above `How to submit a candidacy`_ documentation.
.. include:: ocata_ptl_candidates.rst
.. TODO: add TC Candidates list when TC elections are over
.. seealso:: .. seealso::
See the `Election Officiating Guidelines`_ page in the wiki for details on the See the `Election Officiating Guidelines`_ page in the wiki for details on the

449
doc/source/ocata/ptl.yaml Normal file
View File

@ -0,0 +1,449 @@
candidates:
Astara:
- email: ryan.petrello@dreamhost.com
fullname: Ryan Petrello
ircname: ryanpetrello
elected: INCUMBENT-PTL
Barbican:
- elected: true
email: dmccowan@cisco.com
fullname: Dave Mccowan
ircname: dave-mccowan
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Barbican/dave-mccowan.txt
Chef_OpenStack:
- elected: true
email: s@cassiba.com
fullname: Samuel Cassiba
ircname: sc\`
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Chef_OpenStack/sc%60.txt
Cinder:
- elected: true
email: sean_mcginnis@dell.com
fullname: Sean McGinnis
ircname: smcginnis
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Cinder/smcginnis.txt
Cloudkitty:
- elected: true
email: christophe.sauthier@objectif-libre.com
fullname: Christophe Sauthier
ircname: huats
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Cloudkitty/huats.txt
Community_App_Catalog:
- elected: true
email: doc@aedo.net
fullname: Christopher Aedo
ircname: docaedo
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Community_App_Catalog/docaedo.txt
Congress:
- elected: true
email: ekcs.openstack@gmail.com
fullname: Eric Kao
ircname: ekcs
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Congress/ekcs.txt
Designate:
- elected: true
email: graham.hayes@hpe.com
fullname: Graham Hayes
ircname: mugsie
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Designate/mugsie.txt
Documentation:
- elected: true
email: openstack@lanabrindley.com
fullname: Lana Brindley
ircname: loquacities
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Documentation/loquacities.txt
Dragonflow:
- elected: true
email: omer.anson@toganetworks.com
fullname: Omer Anson
ircname: oanson
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Dragonflow/oanson.txt
Ec2_Api:
- elected: true
email: alexandrelevine@gmail.com
fullname: Alexandre Levine
ircname: alexandrelevine
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ec2_Api/alexandrelevine.txt
Freezer:
- elected: false
email: deklan.dieterly@hpe.com
fullname: Deklan Dieterly
ircname: ddieterly
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Freezer/ddieterly.txt
- elected: true
email: pi3rra@root.gg
fullname: Pierre Mathieu
ircname: slashme
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Freezer/slashme.txt
Fuel:
- elected: true
email: ashtokolov@mirantis.com
fullname: Alexey Shtokolov
ircname: ashtokolov
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Fuel/ashtokolov.txt
Glance:
- elected: true
email: brian.rosmaita@rackspace.com
fullname: Brian Rosmaita
ircname: rosmaita
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Glance/rosmaita.txt
Heat:
- elected: true
email: ramishra@redhat.com
fullname: Rabi Mishra
ircname: ramishra
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Heat/ramishra.txt
Horizon:
- elected: true
email: r1chardj0n3s@gmail.com
fullname: Richard Jones
ircname: r1chardj0n3s
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Horizon/r1chardj0n3s.txt
I18n:
- elected: true
email: ianyrchoi@gmail.com
fullname: Ian Y. Choi
ircname: ianychoi
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/I18n/ianychoi.txt
Infrastructure:
- elected: true
email: fungi@yuggoth.org
fullname: Jeremy Stanley
ircname: fungi
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Infrastructure/fungi.txt
Ironic:
- elected: false
email: dtantsur@redhat.com
fullname: Dmitry Tantsur
ircname: dtantsur
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ironic/dtantsur.txt
- elected: true
email: jim@jimrollenhagen.com
fullname: Jim Rollenhagen
ircname: jroll
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ironic/jroll.txt
Karbor:
- elected: true
email: ficoos@gmail.com
fullname: Saggi Mizrahi
ircname: saggi
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Karbor/saggi.txt
Keystone:
- elected: false
email: samueldmq@gmail.com
fullname: Samuel de Medeiros Queiroz
ircname: samueldmq
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Keystone/samueldmq.txt
- elected: true
email: s.martinelli@gmail.com
fullname: Steve Martinelli
ircname: stevemar
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Keystone/stevemar.txt
Kolla:
- elected: false
email: zhang.lei.fly@gmail.com
fullname: Jeffrey Zhang
ircname: jeffrey4l
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kolla/jeffrey4l.txt
- elected: true
email: inc007@gmail.com
fullname: Michal Jastrzebski
ircname: inc0
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kolla/inc0.txt
Kuryr:
- elected: true
email: antonisp@celebdor.com
fullname: Antoni Segura Puimedon
ircname: apuimedo
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kuryr/apuimedo.txt
Magnum:
- elected: true
email: adrian.otto@rackspace.com
fullname: Adrian Otto
ircname: Adrian_Otto
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Magnum/Adrian_Otto.txt
- elected: false
email: hongbin.lu@huawei.com
fullname: Hongbin Lu
ircname: hongbin
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Magnum/hongbin.txt
Manila:
- elected: true
email: ben@swartzlander.org
fullname: Ben Swartzlander
ircname: bswartz
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Manila/bswartz.txt
Mistral:
- elected: true
email: renat.akhmerov@gmail.com
fullname: Renat Akhmerov
ircname: rakhmerov
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Mistral/rakhmerov.txt
Monasca:
- elected: true
email: roland.hochmuth@hp.com
fullname: Roland Hochmuth
ircname: rhochmuth
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Monasca/Roland_Hochmuth.txt
Murano:
- elected: true
email: k.zaitsev@me.com
fullname: Kirill Zaitsev
ircname: kzaitsev_mb
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Murano/kzaitsev_mb.txt
Neutron:
- elected: true
email: armamig@gmail.com
fullname: Armando Migliaccio
ircname: armax
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Neutron/armax.txt
Nova:
- elected: true
email: mriedem@us.ibm.com
fullname: Matt Riedemann
ircname: mriedem
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Nova/mriedem.txt
OpenStackAnsible:
- elected: true
email: andy.mccrae@gmail.com
fullname: Andy Mccrae
ircname: andymccr
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStackAnsible/andymccr.txt
OpenStackClient:
- elected: true
email: dtroyer@gmail.com
fullname: Dean Troyer
ircname: dtroyer
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStackClient/dtroyer.txt
OpenStackSalt:
- email: ales.komarek@tcpcloud.eu
fullname: Ales Komarek
ircname: cznewt
elected: INCUMBENT-PTL
OpenStack_Charms:
- elected: true
email: james.page@ubuntu.com
fullname: James Page
ircname: jamespage
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStack_Charms/jamespage.txt
OpenStack_UX:
- email: pkruithofjr@gmail.com
fullname: Piet Kruithof
ircname: Piet
elected: TC-APPOINTED
Oslo:
- elected: true
email: jxharlow@godaddy.com
fullname: Joshua Harlow
ircname: harlowja
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Oslo/harlowja.txt
Packaging_Deb:
- elected: true
email: zigo@debian.org
fullname: Thomas Goirand
ircname: zigo
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Packaging_Deb/zigo.txt
Packaging_Rpm:
- elected: true
email: hguemar@fedoraproject.org
fullname: "Ha\xEFkel Gu\xE9mar"
ircname: hguemar
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Packaging_Rpm/hguemar.txt
Puppet_OpenStack:
- elected: true
email: aschultz@redhat.com
fullname: Alex Schultz
ircname: mwhahaha
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Puppet_OpenStack/mwhahaha.txt
Quality_Assurance:
- elected: true
email: ken-oomichi@wx.jp.nec.com
fullname: Ken'ichi Ohmichi
ircname: oomichi
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Quality_Assurance/oomichi.txt
- elected: false
email: masayuki@igawa.me
fullname: Masayuki Igawa
ircname: masayukig
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Quality_Assurance/masayukig.txt
Rally:
- elected: true
email: akurilin@mirantis.com
fullname: Andrey Kurilin
ircname: andreykurilin
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Rally/andreykurilin.txt
RefStack:
- elected: true
email: cdiep@us.ibm.com
fullname: Catherine Diep
ircname: catherineD
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/RefStack/catherineD.txt
Release_Management:
- elected: true
email: doug@doughellmann.com
fullname: Doug Hellmann
ircname: dhellmann
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Release_Management/dhellmann.txt
Requirements:
- elected: true
email: tony@bakeyournoodle.com
fullname: Tony Breeds
ircname: tonyb
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Requirements/tonyb.txt
Sahara:
- elected: true
email: vgridnev@mirantis.com
fullname: Vitaly Gridnev
ircname: vgridnev
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Sahara/vgridnev.txt
Searchlight:
- elected: true
email: steven.j.mclellan@gmail.com
fullname: Steve Mclellan
ircname: sjmc7
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Searchlight/sjmc7.txt
Security:
- email: hyakuhei@gmail.com
fullname: Robert Clark
ircname: hyakuhei
elected: TC-APPOINTED
Senlin:
- elected: true
email: yanyanhu@cn.ibm.com
fullname: Yanyan Hu
ircname: yanyanhu
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Senlin/yanyanhu.txt
Solum:
- elected: true
email: kulkarni.devdatta@gmail.com
fullname: Devdatta Kulkarni
ircname: devkulkarni
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Solum/devkulkarni.txt
Stable_Branch_Maintenance:
- elected: true
email: tony@bakeyournoodle.com
fullname: Tony Breeds
ircname: tonyb
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Stable_Branch_Maintenance/tonyb.txt
Swift:
- elected: true
email: me@not.mn
fullname: John Dickinson
ircname: notmyname
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Swift/notmyname.txt
Tacker:
- elected: true
email: srics.r@gmail.com
fullname: Sridhar Ramaswamy
ircname: sridhar_ram
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Tacker/sridhar_ram.txt
Telemetry:
- elected: true
email: julien@danjou.info
fullname: Julien Danjou
ircname: jd__
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Telemetry/jd__.txt
Tripleo:
- elected: true
email: emilien@redhat.com
fullname: Emilien Macchi
ircname: emilienm
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Tripleo/emilienm.txt
Trove:
- elected: true
email: amrith@tesora.com
fullname: Amrith Kumar
ircname: amrith
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Trove/amrith.txt
Vitrage:
- elected: true
email: ifat.afek@nokia.com
fullname: Ifat Afek
ircname: ifat_afek
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Vitrage/ifat_afek.txt
Watcher:
- elected: true
email: antoine.cabot@b-com.com
fullname: Antoine Cabot
ircname: acabot
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Watcher/acabot.txt
Winstackers:
- elected: true
email: cbelu@cloudbasesolutions.com
fullname: Claudiu Belu
ircname: claudiub
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Winstackers/claudiub.txt
Zaqar:
- elected: true
email: flwang@catalyst.net.nz
fullname: Fei Long Wang
ircname: flwang
url: https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Zaqar/flwang.txt
election: ocata
elections_results:
Freezer: http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_662fe1dfea3b2980
Ironic: http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_5bbba65c5879783c
Keystone: http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_f0432662b678f99f
Kolla: http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_9fa13adc6f6e7148
Magnum: http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_2fd00175baa579a6
Quality_Assurance: http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_745c895dcf12c405
projects:
- Astara
- Barbican
- Chef_OpenStack
- Cinder
- Cloudkitty
- Community_App_Catalog
- Congress
- Designate
- Documentation
- Dragonflow
- Ec2_Api
- Freezer
- Fuel
- Glance
- Heat
- Horizon
- I18n
- Infrastructure
- Ironic
- Karbor
- Keystone
- Kolla
- Kuryr
- Magnum
- Manila
- Mistral
- Monasca
- Murano
- Neutron
- Nova
- OpenStackAnsible
- OpenStackClient
- OpenStackSalt
- OpenStack_Charms
- OpenStack_UX
- Oslo
- Packaging_Deb
- Packaging_Rpm
- Puppet_OpenStack
- Quality_Assurance
- Rally
- RefStack
- Release_Management
- Requirements
- Sahara
- Searchlight
- Security
- Senlin
- Solum
- Stable_Branch_Maintenance
- Swift
- Tacker
- Telemetry
- Tripleo
- Trove
- Vitrage
- Watcher
- Winstackers
- Zaqar

View File

@ -1,240 +0,0 @@
Ocata PTL Candidates
======================
* Astara
* Barbican
* `Dave Mccowan (dave-mccowan) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Barbican/dave-mccowan.txt>`_
* Chef OpenStack
* `Samuel Cassiba (sc\`) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Chef_OpenStack/sc%60.txt>`_
* Cinder
* `Sean McGinnis (smcginnis) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Cinder/smcginnis.txt>`_
* Cloudkitty
* `Christophe Sauthier (huats) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Cloudkitty/huats.txt>`_
* Community App Catalog
* `Christopher Aedo (docaedo) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Community_App_Catalog/docaedo.txt>`_
* Congress
* `Eric Kao (ekcs) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Congress/ekcs.txt>`_
* Designate
* `Graham Hayes (mugsie) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Designate/mugsie.txt>`_
* Documentation
* `Lana Brindley (loquacities) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Documentation/loquacities.txt>`_
* Dragonflow
* `Omer Anson (oanson) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Dragonflow/oanson.txt>`_
* Ec2 Api
* `Alexandre Levine (alexandrelevine) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ec2_Api/alexandrelevine.txt>`_
* Freezer
* `Deklan Dieterly (ddieterly) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Freezer/ddieterly.txt>`_
* `Pierre Mathieu (slashme) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Freezer/slashme.txt>`_
* Fuel
* `Alexey Shtokolov (ashtokolov) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Fuel/ashtokolov.txt>`_
* Glance
* `Brian Rosmaita (rosmaita) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Glance/rosmaita.txt>`_
* Heat
* `Rabi Mishra (ramishra) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Heat/ramishra.txt>`_
* Horizon
* `Richard Jones (r1chardj0n3s) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Horizon/r1chardj0n3s.txt>`_
* I18n
* `Ian Y. Choi (ianychoi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/I18n/ianychoi.txt>`_
* Infrastructure
* `Jeremy Stanley (fungi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Infrastructure/fungi.txt>`_
* Ironic
* `Dmitry Tantsur (dtantsur) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ironic/dtantsur.txt>`_
* `Jim Rollenhagen (jroll) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ironic/jroll.txt>`_
* Karbor
* `Saggi Mizrahi (saggi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Karbor/saggi.txt>`_
* Keystone
* `Samuel de Medeiros Queiroz (samueldmq) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Keystone/samueldmq.txt>`_
* `Steve Martinelli (stevemar) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Keystone/stevemar.txt>`_
* Kolla
* `Jeffrey Zhang (jeffrey4l) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kolla/jeffrey4l.txt>`_
* `Michal Jastrzebski (inc0) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kolla/inc0.txt>`_
* Kuryr
* `Antoni Segura Puimedon (apuimedo) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kuryr/apuimedo.txt>`_
* Magnum
* `Adrian Otto (Adrian_Otto) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Magnum/Adrian_Otto.txt>`_
* `Hongbin Lu (hongbin) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Magnum/hongbin.txt>`_
* Manila
* `Ben Swartzlander (bswartz) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Manila/bswartz.txt>`_
* Mistral
* `Renat Akhmerov (rakhmerov) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Mistral/rakhmerov.txt>`_
* Monasca
* `Roland Hochmuth (rhochmuth) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Monasca/rhochmuth.txt>`_
* Murano
* `Kirill Zaitsev (kzaitsev_mb) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Murano/kzaitsev_mb.txt>`_
* Neutron
* `Armando Migliaccio (armax) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Neutron/armax.txt>`_
* Nova
* `Matt Riedemann (mriedem) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Nova/mriedem.txt>`_
* OpenStackAnsible
* `Andy Mccrae (andymccr) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStackAnsible/andymccr.txt>`_
* OpenStackClient
* `Dean Troyer (dtroyer) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStackClient/dtroyer.txt>`_
* OpenStackSalt
* OpenStack Charms
* `James Page (jamespage) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStack_Charms/jamespage.txt>`_
* OpenStack UX
* Oslo
* `Joshua Harlow (harlowja) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Oslo/harlowja.txt>`_
* Packaging Deb
* `Thomas Goirand (zigo) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Packaging_Deb/zigo.txt>`_
* Packaging Rpm
* `Haïkel Guémar (hguemar) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Packaging_Rpm/hguemar.txt>`_
* Puppet OpenStack
* `Alex Schultz (mwhahaha) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Puppet_OpenStack/mwhahaha.txt>`_
* Quality Assurance
* `Ken'ichi Ohmichi (oomichi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Quality_Assurance/oomichi.txt>`_
* `Masayuki Igawa (masayukig) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Quality_Assurance/masayukig.txt>`_
* Rally
* `Andrey Kurilin (andreykurilin) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Rally/andreykurilin.txt>`_
* RefStack
* `Catherine Diep (catherineD) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/RefStack/catherineD.txt>`_
* Release Management
* `Doug Hellmann (dhellmann) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Release_Management/dhellmann.txt>`_
* Requirements
* `Tony Breeds (tonyb) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Requirements/tonyb.txt>`_
* Sahara
* `Vitaly Gridnev (vgridnev) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Sahara/vgridnev.txt>`_
* Searchlight
* `Steve Mclellan (sjmc7) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Searchlight/sjmc7.txt>`_
* Security
* Senlin
* `Yanyan Hu (yanyanhu) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Senlin/yanyanhu.txt>`_
* Solum
* `Devdatta Kulkarni (devkulkarni) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Solum/devkulkarni.txt>`_
* Stable Branch Maintenance
* `Tony Breeds (tonyb) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Stable_Branch_Maintenance/tonyb.txt>`_
* Swift
* `John Dickinson (notmyname) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Swift/notmyname.txt>`_
* Tacker
* `Sridhar Ramaswamy (sridhar_ram) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Tacker/sridhar_ram.txt>`_
* Telemetry
* `Julien Danjou (jd__) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Telemetry/jd__.txt>`_
* Tripleo
* `Emilien Macchi (emilienm) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Tripleo/emilienm.txt>`_
* Trove
* `Amrith Kumar (amrith) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Trove/amrith.txt>`_
* Vitrage
* `Ifat Afek (ifat_afek) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Vitrage/ifat_afek.txt>`_
* Watcher
* `Antoine Cabot (acabot) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Watcher/acabot.txt>`_
* Winstackers
* `Claudiu Belu (claudiub) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Winstackers/claudiub.txt>`_
* Zaqar
* `Fei Long Wang (flwang) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Zaqar/flwang.txt>`_

View File

@ -1,251 +0,0 @@
Ocata PTL
=========
* Astara
* Ryan Petrello [#IncumbentPTL]_
* Barbican
* `Dave Mccowan (dave-mccowan) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Barbican/dave-mccowan.txt>`_
* Chef OpenStack
* `Samuel Cassiba (sc\`) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Chef_OpenStack/sc%60.txt>`_
* Cinder
* `Sean McGinnis (smcginnis) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Cinder/smcginnis.txt>`_
* Cloudkitty
* `Christophe Sauthier (huats) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Cloudkitty/huats.txt>`_
* Community App Catalog
* `Christopher Aedo (docaedo) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Community_App_Catalog/docaedo.txt>`_
* Congress
* `Eric Kao (ekcs) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Congress/ekcs.txt>`_
* Designate
* `Graham Hayes (mugsie) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Designate/mugsie.txt>`_
* Documentation
* `Lana Brindley (loquacities) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Documentation/loquacities.txt>`_
* Dragonflow
* `Omer Anson (oanson) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Dragonflow/oanson.txt>`_
* Ec2 Api
* `Alexandre Levine (alexandrelevine) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ec2_Api/alexandrelevine.txt>`_
* Freezer
* `Pierre Mathieu (slashme) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Freezer/slashme.txt>`_
* Fuel
* `Alexey Shtokolov (ashtokolov) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Fuel/ashtokolov.txt>`_
* Glance
* `Brian Rosmaita (rosmaita) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Glance/rosmaita.txt>`_
* Heat
* `Rabi Mishra (ramishra) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Heat/ramishra.txt>`_
* Horizon
* `Richard Jones (r1chardj0n3s) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Horizon/r1chardj0n3s.txt>`_
* I18n
* `Ian Y. Choi (ianychoi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/I18n/ianychoi.txt>`_
* Infrastructure
* `Jeremy Stanley (fungi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Infrastructure/fungi.txt>`_
* Ironic
* `Jim Rollenhagen (jroll) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Ironic/jroll.txt>`_
* Karbor
* `Saggi Mizrahi (saggi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Karbor/saggi.txt>`_
* Keystone
* `Steve Martinelli (stevemar) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Keystone/stevemar.txt>`_
* Kolla
* `Michal Jastrzebski (inc0) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kolla/inc0.txt>`_
* Kuryr
* `Antoni Segura Puimedon (apuimedo) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Kuryr/apuimedo.txt>`_
* Magnum
* `Adrian Otto (Adrian_Otto) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Magnum/Adrian_Otto.txt>`_
* Manila
* `Ben Swartzlander (bswartz) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Manila/bswartz.txt>`_
* Mistral
* `Renat Akhmerov (rakhmerov) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Mistral/rakhmerov.txt>`_
* Monasca
* `Roland Hochmuth (rhochmuth) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Monasca/rhochmuth.txt>`_
* Murano
* `Kirill Zaitsev (kzaitsev_mb) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Murano/kzaitsev_mb.txt>`_
* Neutron
* `Armando Migliaccio (armax) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Neutron/armax.txt>`_
* Nova
* `Matt Riedemann (mriedem) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Nova/mriedem.txt>`_
* OpenStackAnsible
* `Andy Mccrae (andymccr) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStackAnsible/andymccr.txt>`_
* OpenStackClient
* `Dean Troyer (dtroyer) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStackClient/dtroyer.txt>`_
* OpenStackSalt
* Ales Komarek [#IncumbentPTL]_
* OpenStack Charms
* `James Page (jamespage) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/OpenStack_Charms/jamespage.txt>`_
* OpenStack UX
* Piet Kruithof [#TCAppointed]_
* Oslo
* `Joshua Harlow (harlowja) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Oslo/harlowja.txt>`_
* Packaging Deb
* `Thomas Goirand (zigo) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Packaging_Deb/zigo.txt>`_
* Packaging Rpm
* `Haïkel Guémar (hguemar) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Packaging_Rpm/hguemar.txt>`_
* Puppet OpenStack
* `Alex Schultz (mwhahaha) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Puppet_OpenStack/mwhahaha.txt>`_
* Quality Assurance
* `Ken'ichi Ohmichi (oomichi) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Quality_Assurance/oomichi.txt>`_
* Rally
* `Andrey Kurilin (andreykurilin) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Rally/andreykurilin.txt>`_
* RefStack
* `Catherine Diep (catherineD) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/RefStack/catherineD.txt>`_
* Release Management
* `Doug Hellmann (dhellmann) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Release_Management/dhellmann.txt>`_
* Requirements
* `Tony Breeds (tonyb) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Requirements/tonyb.txt>`_
* Sahara
* `Vitaly Gridnev (vgridnev) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Sahara/vgridnev.txt>`_
* Searchlight
* `Steve Mclellan (sjmc7) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Searchlight/sjmc7.txt>`_
* Security
* Robert Clark [#TCAppointed]_
* Senlin
* `Yanyan Hu (yanyanhu) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Senlin/yanyanhu.txt>`_
* Solum
* `Devdatta Kulkarni (devkulkarni) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Solum/devkulkarni.txt>`_
* Stable Branch Maintenance
* `Tony Breeds (tonyb) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Stable_Branch_Maintenance/tonyb.txt>`_
* Swift
* `John Dickinson (notmyname) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Swift/notmyname.txt>`_
* Tacker
* `Sridhar Ramaswamy (sridhar_ram) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Tacker/sridhar_ram.txt>`_
* Telemetry
* `Julien Danjou (jd__) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Telemetry/jd__.txt>`_
* Tripleo
* `Emilien Macchi (emilienm) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Tripleo/emilienm.txt>`_
* Trove
* `Amrith Kumar (amrith) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Trove/amrith.txt>`_
* Vitrage
* `Ifat Afek (ifat_afek) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Vitrage/ifat_afek.txt>`_
* Watcher
* `Antoine Cabot (acabot) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Watcher/acabot.txt>`_
* Winstackers
* `Claudiu Belu (claudiub) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Winstackers/claudiub.txt>`_
* Zaqar
* `Fei Long Wang (flwang) <https://git.openstack.org/cgit/openstack/election/plain/candidates/ocata/Zaqar/flwang.txt>`_
.. [#TCAppointed] By TC Appointment
.. [#IncumbentPTL] Incumbent PTL
Elections results
-----------------
* `Freezer <http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_662fe1dfea3b2980>`_
* `Ironic <http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_5bbba65c5879783c>`_
* `Keystone <http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_f0432662b678f99f>`_
* `Kolla <http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_9fa13adc6f6e7148>`_
* `Magnum <http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_2fd00175baa579a6>`_
* `Quality Assurance <http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_745c895dcf12c405>`_

View File

@ -0,0 +1,102 @@
# 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.
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
import argparse
import os
import yaml
from openstack_election import utils
def check_elected_candidate(candidates):
for candidate in candidates:
if candidate.get('elected'):
return True
return False
def process(db, round):
dirty = False
# Remove un-needed project
if round == 'tc' and len(db['projects']) != 1:
dirty = True
db['projects'] = ['TC']
db['candidates'] = {'TC': db['candidates']['TC']}
if round == 'ptl' and 'TC' in db['projects']:
dirty = True
db['projects'].remove('TC')
del db['candidates']['TC']
# Check for missing and elected candidates
for project in db['projects']:
candidates = db['candidates'][project]
if len(candidates) == 0:
print("[W] Appoints candidate for %s" % project)
candidates.append({
'ircname': 'INSERT_IRCNAME',
'email': 'INSERT_EMAIL',
'fullname': 'INSERT_FULLNAME',
'elected': 'TC-APPOINTED_OR_INCUMBENT-PTL',
})
dirty = True
elif len(candidates) > 1:
if not check_elected_candidate(candidates):
print("[W] Set elected attribute for winner of %s" % project)
for candidate in candidates:
candidate['elected'] = False
dirty = True
if project not in db.setdefault('elections_results', {}):
print("[W] Set election id for %s" % project)
db['elections_results'][project] = 'INSERT-RESULT-LINK'
dirty = True
elif not candidates[0].get('elected'):
candidates[0]['elected'] = True
dirty = True
return dirty
def main():
desc = 'Generate or update an election archive for site rendering'
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-v', '--verbose', action="count", default=0,
help='Increase program verbosity')
parser.add_argument('-r', '--release', default=utils.SERIES_NAME,
help='Which nominations to look at')
parser.add_argument('-b', '--basedir',
default=os.getcwd(),
help='Path to git clone of openstack/election')
parser.add_argument('round', choices=('ptl', 'tc'))
args = parser.parse_args()
args.outputdir = os.path.join(args.basedir, 'doc', 'source', args.release)
args.outputdir = os.path.expanduser(args.outputdir)
if not os.path.isdir(args.outputdir):
os.mkdir(args.outputdir, 0755)
db_file = os.path.join(args.outputdir, "%s.yaml" % args.round)
if os.path.isfile(db_file):
print("[+] Reloading candidate list %s" % db_file)
db = yaml.safe_load(open(db_file))
else:
db = utils.build_candidates_list(args.release)
if process(db, args.round):
open(db_file, "w").write(yaml.safe_dump(db, default_flow_style=False))
print("[W] Proceed to manual update of %s" % db_file)

View File

@ -43,6 +43,8 @@ CGIT_URL = 'https://git.openstack.org/cgit'
PROJECTS_URL = ('%s/openstack/governance/plain/reference/projects.yaml' % PROJECTS_URL = ('%s/openstack/governance/plain/reference/projects.yaml' %
(CGIT_URL)) (CGIT_URL))
PAST_ELECTIONS = ['ocata']
conf = yaml.load(open('configuration.yaml')) conf = yaml.load(open('configuration.yaml'))
exceptions = None exceptions = None

View File

@ -24,6 +24,8 @@ console_scripts =
check-candidacy = openstack_election.cmds.check_candidacy:main check-candidacy = openstack_election.cmds.check_candidacy:main
check-candidacy-manual = openstack_election.cmds.check_manual:main check-candidacy-manual = openstack_election.cmds.check_manual:main
render-statistics = openstack_election.cmds.render_statistics:main render-statistics = openstack_election.cmds.render_statistics:main
update-governance = openstack_election.cmds.update_governance:main
close-election = openstack_election.cmds.close_election:main
[build_sphinx] [build_sphinx]
all_files = 1 all_files = 1