Generate iCal files from a YAML description of meetings
Go to file
gspindles 47f5f14d25 Fixed Mis-alignment
Added a space to neuron-l3-sub-team-meeting.yaml.

Change-Id: I76306608208ad1fa425e56065935e0b3fa7fdbe5
2014-05-06 19:27:35 -05:00
gerrit-powered-agenda Added all YAML Files 2014-05-06 19:13:33 -05:00
meetings Fixed Mis-alignment 2014-05-06 19:27:35 -05:00
.gitignore Added schedule conflict checking as gate job 2014-04-21 22:47:27 -05:00
.gitreview Add .gitreview file. 2014-03-09 13:33:15 -05:00
LICENSE Make code PEP8-compliant and add PEP8 test files 2014-04-03 18:50:40 -05:00
MANIFEST.in Make code PEP8-compliant and add PEP8 test files 2014-04-03 18:50:40 -05:00
README.rst Added all YAML Files 2014-05-06 19:13:33 -05:00
requirements.txt Add support for command-line arguments and options 2014-05-04 19:03:33 -05:00
setup.cfg Make code PEP8-compliant and add PEP8 test files 2014-04-03 18:50:40 -05:00
setup.py Make code PEP8-compliant and add PEP8 test files 2014-04-03 18:50:40 -05:00
test-requirements.txt Make code PEP8-compliant and add PEP8 test files 2014-04-03 18:50:40 -05:00
tox.ini Make code PEP8-compliant and add PEP8 test files 2014-04-03 18:50:40 -05:00

README.rst

Gerrit-Powered-Agenda

This project aims to provide an easier way to manage OpenStack team meetings. Currently, each team's meeting time and agenda are listed at:

https://wiki.openstack.org/wiki/Meetings

This project replaces each meeting with well-defined YAML files.

This tool will run as a Jenkins job, so that each time a YAML meeting is created, Jenkins will generate an iCal file. Additionally, user can also run the program locally to check for conflict before submitting the meeting changes for review.

Getting Started

Running Locally from Command Line

To test this project locally, you must have the following requirements installed:

  • Python 3.3+
  • iCalendar python library
  • PyYaml python library

Before running this tool, first edit some meeting YAML files in the meetings directory. This directory already contains YAML files for the meetings found on the Meetings wiki page. To create a new meeting YAML file, read the YAML Meeting File section below.

To start with, we need to clone the repository to a local directory. Afterward, cd into the directory where the jobs.py script is found.

$ git clone https://git.openstack.org/cgit/openstack-infra/gerrit-powered-agenda
$ cd gerrit-powered-agenda/gerrit-powered-agenda/

The different command line options are as follows. For help, use -h (or --help) to show a list of options and exit.

$ python jobs.py -h

The -t TEST (or --test TEST) is used to execute a test. The valid values for TEST are check, gate and post. It'd be a good idea to run a quick check job to test for conflicts before pushing for review.

$ python jobs.py -t check
$ python jobs.py -t gate
$ python jobs.py -t post

For converting YAML files to iCal files, there are four flags to consider:

  • Use the -y YAML_DIR (or --yamldir YAML_DIR) to specify the path to the directory YAML_DIR where the YAML files are located. The default YAML_DIR is meetings when this flag is not provided.
  • Use the -i ICAL_DIR (or --icaldir ICAL_DIR) to specify the path to the directory ICAL_DIR where the iCals files will be written to.
  • Use the -m MEETING_LIST_FILE (or --meetings MEETING_LIST_FILE) to write selected YAML files in MEETING_LIST_FILE to ICAL_DIR.
    • Note: MEETING_LIST_FILE consists of names of YAML files per line.
  • Add the -c (or --convert) to convert.

The following are a few scenarios:

  • Read all the YAML files in meetings and output iCal files to iCals folder:

    $ cd gerrit-powered-agenda/gerrit-powered-agenda/
    $ mkdir ../iCals
    $ python jobs.py -i ../iCals -c
  • Read all the YAML files in myYAML folder and output iCal files to iCals folder:

    $ cd gerrit-powered-agenda/gerrit-powered-agenda/
    $ mkdir ../iCals
    $ python jobs.py -y ../myYAML -i ../iCals -c
  • Read myMeetings.txt, select the YAML file listed in there from myYAML directory, convert these files and write them to iCals folder:

    $ cd gerrit-powered-agenda/gerrit-powered-agenda/
    $ mkdir ../iCals
    $ python jobs.py -y ../myYAML -m ../myMeetings.txt -i ../iCals -c

Running as a Jenkins Job

When this project is complete, this tool will run as a Jenkins job. A developer wishing to modify existing meetings or create a new meeting will push the respecitve YAML file to Gerrit, which will then be reviewed. When the review passes, Jenkins will run this tool to generate iCal files.

YAML Meeting File

Refer to the meetings page on the OpenStack Wiki for a list of meetings:

https://wiki.openstack.org/wiki/Meetings

For a list of yaml meeting files, visit

https://git.openstack.org/cgit/openstack-infra/gerrit-powered-agenda/tree/meetings

Each meeting consists of:

  • project -- the name of the project
  • schedule -- a list of schedule each consisting of
    • time -- time string in UTC
    • day -- the day of week the meeting takes place
    • irc -- the irc room in which the meeting is held
    • frequency -- frequent occurence of the meeting
  • chair -- name of the meeting's chair
  • description -- a paragraph description about the meeting
  • agenda -- a paragraph consisting of the bulleted list of topics

The file name should be a lower-cased, hyphenated version of the meeting name, ending with .yaml or .yml. For example, Keystone team meeting should be saved under keystone-team-meeting.yml.

Example

This is an example for the yaml meeting for Nova team meeting. The whole file will be import into Python as a dictionary.

  • The project name is shown below.

    project:  Nova Team Meeting
  • The schedule is a list of dictionaries each consisting of time in UTC, day of the week, the irc meeting room, and the frequency of the meeting. Options for the frequency are weekly, biweekly-even, and biweekly-odd at the moment.

    schedule:
        - time:       '1400'
          day:        Thursday
          irc:        openstack-meeting-alt
          frequency:  weekly
    
        - time:       '2100'
          day:        Thursday
          irc:        openstack-meeting
          frequency:  weekly
  • The chair is just a one liner. The might be left empty if there is not a chair.

    chair:  Russell Bryant
  • The project description is as follows. Use > for parapraphs where new lines are folded, or | for paragraphs where new lines are preserved.

    description:  >
        This meeting is a weekly gathering of developers working on OpenStack.
        Compute (Nova). We cover topics such as release planning and status,
        bugs, reviews, and other current topics worthy of real-time discussion.
  • The project agenda is show below. Note the use of | to treat the agenda as a paragraph where newlines are perserved. Currently we plan to use * to format the list of item so it is similar to the wiki format. Add additional for each level of sublist items. I.e. ** for a sub-item and *** for a sub-item of a sub-item.

    agenda:  |
        * General annoucement
        * Sub-teams
        * Bugs
        * Blueprints
        * Open discussion