openstack-resource-agents-s.../README.rst
Adam Spiers b61b7b70ef Initial commit
This populates the repository with a standard layout which
was adapted from nova-specs.

Change-Id: I75d80f9a80cc7e7a013c9229bb5b2b2cf7cf5ed6
2016-06-28 11:56:34 +01:00

135 lines
5.9 KiB
ReStructuredText

=======
README
=======
Specifications for Pacemaker Resource Agents for OpenStack
==========================================================
This git repository is used to hold approved design specifications for
additions to the Pacemaker Resource Agents for OpenStack project.
Reviews of the specs are done in gerrit, using a similar workflow to
how we review and merge changes to the code itself. For specific
policies around specification review, refer to the end of this
document.
The layout of this repository is::
specs/<release>/
Where there are two sub-directories:
specs/<release>/approved: specifications approved but not yet implemented
specs/<release>/implemented: implemented specifications
The lifecycle of a specification
--------------------------------
Developers proposing a specification should propose a new file in the
``approved`` directory. ``openstack-resource-agents-core`` will review
the change in the usual manner for the OpenStack project, and eventually it
will get merged if a consensus is reached. At this time the Launchpad blueprint
is also approved. The developer is then free to propose code reviews to
implement their specification. These reviews should be sure to reference the
Launchpad blueprint in their commit message for tracking purposes.
Once all code for the feature is merged, the Launchpad blueprint is
marked complete. As the developer of an approved specification it is your
responsibility to mark your blueprint complete when all of the required
patches have merged.
Periodically, someone from ``openstack-resource-agents-core`` will move
implemented specifications from the ``approved`` directory to the
``implemented`` directory. Whilst individual developers are welcome to propose
this move for their implemented specifications, we have generally just done
this in a batch at the end of the release cycle. It is important to create
redirects when this is done so that existing links to the approved
specification are not broken. Redirects aren't symbolic links, they are defined
in a file which sphinx consumes. An example is at ``specs/newton/redirects``.
This directory structure allows you to see what we thought about doing,
decided to do, and actually got done. Users interested in functionality in a
given release should only refer to the ``implemented`` directory.
Example specifications
----------------------
You can find an example spec in ``specs/template.rst``.
Backlog specifications
----------------------
Additionally, we allow the proposal of specifications that do not have a
developer assigned to them. These are proposed for review in the same manner as
above, but are added to::
specs/backlog/approved
Specifications in this directory indicate the original author has either
become unavailable, or has indicated that they are not going to implement the
specification. The specifications found here are available as opportunities for
people looking to get involved with the project. If you are interested in
claiming a spec, start by posting a review for the specification that moves it
from this directory to the next active release. Please set yourself as the new
`primary assignee` and maintain the original author in the `other contributors`
list.
Working with gerrit and specification unit tests
------------------------------------------------
For more information about working with gerrit, see
http://docs.openstack.org/infra/manual/developers.html#development-workflow
To validate that the specification is syntactically correct (i.e. get more
confidence in the Jenkins result), please execute the following command::
$ tox
After running ``tox``, the documentation will be available for viewing in HTML
format in the ``doc/build/`` directory.
Specification review policies
=============================
There are a number of review policies which ``openstack-resource-agents-core``
will apply when reviewing proposed specifications. They are:
Trivial specifications
----------------------
Proposed changes which are trivial (very small amounts of code) and don't
change any of our public APIs are sometimes not required to provide a
specification. In these cases a Launchpad blueprint is considered sufficient.
These proposals are approved during the open discussion portion of the `weekly
HA IRC meeting`_. If you think your proposed feature is trivial and meets these
requirements, we recommend you bring it up for discussion there before writing
a full specification.
.. _weekly HA IRC meeting: https://wiki.openstack.org/wiki/Meetings/HATeamMeeting
Previously approved specifications
----------------------------------
`Specifications are only approved for a single release`. If your specification
was previously approved but not implemented (or not completely implemented),
then you must seek re-approval for the specification. You can re-propose your
specification by doing the following:
* Copy (not move) your specification to the right directory for the current release.
* Update the document to comply with the new template.
* If there are no functional changes to the specification (only template changes) then add the `Previously-approved: <release>` tag to your commit message.
* Send for review.
* ``openstack-resource-agents-core`` will merge specifications which meet
these requirements with a single +2.
Specifications which depend on merging code in other OpenStack projects
-----------------------------------------------------------------------
For specifications `that depend on code in other OpenStack projects merging` we
will not approve the openstack-resource-agents specification until the code in
that other project has merged. To indicate your specification is in this state,
please use the Depends-On git commit message tag. The correct format is
`Depends-On: <change id of other work>`. ``openstack-resource-agents-core`` can
approve the specification at any time, but it wont merge until the code we need
to land in the other project has merged as well.