Generate iCal files from a YAML description of meetings
Go to file
Thierry Carrez d7dd95ae0f Split OpenStack meetings YAML desciptions out
As part of the repository split between code and OpenStack-specific
meetings descriptions, this removes the OpenStack meetings YAML files.

Change-Id: Ibb2520220c0c462d50c1bc393001ea03ae051fb5
2014-11-14 11:27:14 +01:00
arbiter Fix copyrights 2014-10-16 15:06:16 +00:00
meetings Split OpenStack meetings YAML desciptions out 2014-11-14 11:27:14 +01:00
.gitignore Fix default paths for meetings and ical dir 2014-10-03 15:42:22 +00:00
.gitreview Add .gitreview file. 2014-03-09 13:33:15 -05:00
.testr.conf Refactor Meeting init and enable unit tests 2014-06-30 16:39:07 +00: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 Split OpenStack meetings YAML desciptions out 2014-11-14 11:27:14 +01:00
requirements.txt Bump minimum pbr version to 0.6 2014-06-27 22:51:15 +08:00
setup.cfg Finish rename of python packages 2014-05-30 16:41:44 -05:00
setup.py Make code PEP8-compliant and add PEP8 test files 2014-04-03 18:50:40 -05:00
test-requirements.txt Refactor Meeting init and enable unit tests 2014-06-30 16:39:07 +00:00
tox.ini Merge "Ignore H803 for flake8" 2014-10-16 15:34:59 +00: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.

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. To create a new meeting YAML file, read the YAML Meeting File section below.

$ python convert.py -h
usage: convert.py [-h] -y YAML_DIR -i ICAL_DIR [-f]

A tool that automates the process for testing, integrating, and
publishing changes to OpenStack meetings using the existing OpenStack
project infrastructure.

optional arguments:
  -h, --help            show this help message and exit
  -y YAML_DIR, --yamldir YAML_DIR
                        directory containing YAML to process
  -i ICAL_DIR, --icaldir ICAL_DIR
                      directory to store converted iCal
  -f, --force           forcefully remove old .ics files from iCal
  directory
$ git clone https://github.com/openstack-infra/gerrit-powered-agenda.git
$ cd /opt/stack/gerrit-powered-agenda/arbiter/

The following are a few scenarios:

Generate .ics files locally from existing yaml meeting files:

$ python convert.py -y /opt/stack/gerrit-powered-agenda/meetings/ \
                    -i /opt/stack/gerrit-powered-agenda/icals/

The generated .ics files are not tracked in this git repository, but they are available locally to import into your calendar. Note, to remove stale .ics files, use the --force argument:

gerrit-powered-agenda/icals$ ls
Barbican Meeting-b58d78a4.ics
Ceilometer Team Meeting-9ed7b5b4.ics
Chef Cookbook Meeting-2418b331.ics

With each .ics file looking something similar to:

gerrit-powered-agenda/icals$ cat Barbican\ Meeting-b58d78a4.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//OpenStack//Gerrit-Powered Meeting Agendas//EN
BEGIN:VEVENT
SUMMARY:Barbican Meeting (openstack-meeting-alt)
DTSTART;VALUE=DATE-TIME:20141006T200000Z
DURATION:PT1H
DESCRIPTION:Project:  Barbican Meeting\nChair:  jraim\nIRC:  openstack-meet
 ing-alt\nAgenda:'* malini - update on Security Guide documentation\n\n  *
 alee_/atiwari - Crypto plugin changes\n\n  * arunkant - Target support in
 barbican policy enforcement\n\n  * jaraim - Support for debug mode start i
 n barbican\, can be merged?\n\n  '\n\nDescription:  The Barbican project t
 eam holds a weekly team meeting in\n#openstack-meeting-alt:\n* Weekly on M
 ondays at 2000 UTC\n* The blueprints that are used as a basis for the Barb
 ican project can be\n  found at https://blueprints.launchpad.net/barbican\
 n* Notes for previous meetings can be found here.\n* Chair (to contact for
  more information): jraim (#openstack-barbican @\n  Freenode)\n
RRULE:FREQ=WEEKLY
END:VEVENT
END:VCALENDAR

YAML Meeting File

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 occurrence of the meeting
  • chair: name of the meeting's chair
  • description: a paragraph description about the meeting

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

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:  biweekly-even
    
        - time:       '2100'
          day:        Thursday
          irc:        openstack-meeting
          frequency:  biweekly-odd
  • 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 paragraphs 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.