docs: Fix indent level

Leading spaces before item lists leads to vertical line
on the left side. They are completely unnecessary.

Change-Id: I08c3f077e470aa593076a525de1445bc5d0bdb9a
This commit is contained in:
Akihiro Motoki 2017-06-16 05:07:44 +09:00
parent a23cd43abe
commit eee9d2ca80
2 changed files with 149 additions and 151 deletions

View File

@ -50,17 +50,17 @@ We will talk about three classes of tests: unit, functional and integration.
Each respective category typically targets a larger scope of code. Other than Each respective category typically targets a larger scope of code. Other than
that broad categorization, here are a few more characteristic: that broad categorization, here are a few more characteristic:
* Unit tests - Should be able to run on your laptop, directly following a * Unit tests - Should be able to run on your laptop, directly following a
'git clone' of the project. The underlying system must not be mutated, 'git clone' of the project. The underlying system must not be mutated,
mocks can be used to achieve this. A unit test typically targets a function mocks can be used to achieve this. A unit test typically targets a function
or class. or class.
* Functional tests - Run against a pre-configured environment * Functional tests - Run against a pre-configured environment
(tools/configure_for_func_testing.sh). Typically test a component (tools/configure_for_func_testing.sh). Typically test a component
such as an agent using no mocks. such as an agent using no mocks.
* Integration tests - Run against a running cloud, often target the API level, * Integration tests - Run against a running cloud, often target the API level,
but also 'scenarios' or 'user stories'. You may find such tests under but also 'scenarios' or 'user stories'. You may find such tests under
tests/tempest/api, tests/tempest/scenario, tests/fullstack, and in the tests/tempest/api, tests/tempest/scenario, tests/fullstack, and in the
Tempest and Rally projects. Tempest and Rally projects.
Tests in the Neutron tree are typically organized by the testing infrastructure Tests in the Neutron tree are typically organized by the testing infrastructure
used, and not by the scope of the test. For example, many tests under the used, and not by the scope of the test. For example, many tests under the
@ -469,9 +469,7 @@ the tracking of long-running tests and other things.
For more information on the standard Tox-based test infrastructure used by For more information on the standard Tox-based test infrastructure used by
OpenStack and how to do some common test/debugging procedures with Testr, OpenStack and how to do some common test/debugging procedures with Testr,
see this wiki page: see this wiki page: https://wiki.openstack.org/wiki/Testr
https://wiki.openstack.org/wiki/Testr
.. _Testr: https://wiki.openstack.org/wiki/Testr .. _Testr: https://wiki.openstack.org/wiki/Testr
.. _tox: http://tox.readthedocs.org/en/latest/ .. _tox: http://tox.readthedocs.org/en/latest/
@ -593,10 +591,10 @@ doc/source/devref/testing_coverage.rst. You could also rely on Zuul
logs, that are generated post-merge (not every project builds coverage logs, that are generated post-merge (not every project builds coverage
results). To access them, do the following: results). To access them, do the following:
* Check out the latest `merge commit <https://review.openstack.org/gitweb?p=openstack/neutron.git;a=search;s=Jenkins;st=author>`_ * Check out the latest `merge commit <https://review.openstack.org/gitweb?p=openstack/neutron.git;a=search;s=Jenkins;st=author>`_
* Go to: http://logs.openstack.org/<first-2-digits-of-sha1>/<sha1>/post/neutron-coverage/. * Go to: http://logs.openstack.org/<first-2-digits-of-sha1>/<sha1>/post/neutron-coverage/.
* `Spec <https://review.openstack.org/#/c/221494/>`_ is a work in progress to * `Spec <https://review.openstack.org/#/c/221494/>`_ is a work in progress to
provide a better landing page. provide a better landing page.
Debugging Debugging
--------- ---------

View File

@ -77,68 +77,68 @@ This means showing proof of adoption of practices as led by the Neutron core
team. Some of these practices are typically already followed by the most team. Some of these practices are typically already followed by the most
mature OpenStack projects: mature OpenStack projects:
* Exhaustive documentation: it is expected that each project will have a * Exhaustive documentation: it is expected that each project will have a
`developer <http://docs.openstack.org/developer/neutron/>`_, `developer <http://docs.openstack.org/developer/neutron/>`_,
`user/operator <http://docs.openstack.org/mitaka/networking-guide/>`_ `user/operator <http://docs.openstack.org/mitaka/networking-guide/>`_
and `API <http://developer.openstack.org/api-ref/networking/>`_ and `API <http://developer.openstack.org/api-ref/networking/>`_
documentations available. documentations available.
* Exhaustive OpenStack CI coverage: unit, functional, and tempest coverage * Exhaustive OpenStack CI coverage: unit, functional, and tempest coverage
using OpenStack CI (upstream) resources so that `Grafana <http://grafana.openstack.org/dashboard/db/neutron-failure-rate>`_ using OpenStack CI (upstream) resources so that `Grafana <http://grafana.openstack.org/dashboard/db/neutron-failure-rate>`_
and `OpenStack Health <http://status.openstack.org/openstack-health/#/>`_ and `OpenStack Health <http://status.openstack.org/openstack-health/#/>`_
support is available. Access to CI resources and historical data by the support is available. Access to CI resources and historical data by the
team is key to ensuring stability and robustness of a project. team is key to ensuring stability and robustness of a project.
In particular, it is of paramount importance to ensure that DB models/migrations In particular, it is of paramount importance to ensure that DB models/migrations
are tested functionally to prevent data inconsistency issues or unexpected are tested functionally to prevent data inconsistency issues or unexpected
DB logic errors due to schema/models mismatch. For more details, please DB logic errors due to schema/models mismatch. For more details, please
look at the following resources: look at the following resources:
* https://review.openstack.org/#/c/346091/ * https://review.openstack.org/#/c/346091/
* https://review.openstack.org/#/c/346272/ * https://review.openstack.org/#/c/346272/
* https://review.openstack.org/#/c/346083/ * https://review.openstack.org/#/c/346083/
More Database related information can be found on: More Database related information can be found on:
* http://docs.openstack.org/developer/neutron/devref/alembic_migrations.html * http://docs.openstack.org/developer/neutron/devref/alembic_migrations.html
* http://docs.openstack.org/developer/neutron/devref/db_layer.html * http://docs.openstack.org/developer/neutron/devref/db_layer.html
Bear in mind that many projects have been transitioning their codebase and Bear in mind that many projects have been transitioning their codebase and
tests to fully support Python 3+, and it is important that each Stadium tests to fully support Python 3+, and it is important that each Stadium
project supports Python 3+ the same way Neutron core does. For more project supports Python 3+ the same way Neutron core does. For more
information on how to do testing, please refer to the information on how to do testing, please refer to the
`Neutron testing documentation <http://docs.openstack.org/developer/neutron/devref/development.environment.html#testing-neutron>`_. `Neutron testing documentation <http://docs.openstack.org/developer/neutron/devref/development.environment.html#testing-neutron>`_.
* Good release footprint, according to the chosen `release model <http://governance.openstack.org/reference/tags/#release-management-tags>`_. * Good release footprint, according to the chosen `release model <http://governance.openstack.org/reference/tags/#release-management-tags>`_.
* Adherence to deprecation and `stable backports policies <http://governance.openstack.org/reference/tags/#stable-maintenance-tags>`_. * Adherence to deprecation and `stable backports policies <http://governance.openstack.org/reference/tags/#stable-maintenance-tags>`_.
* Demonstrated ability to do `upgrades <http://governance.openstack.org/reference/tags/assert_supports-upgrade.html>`_ * Demonstrated ability to do `upgrades <http://governance.openstack.org/reference/tags/assert_supports-upgrade.html>`_
and/or `rolling upgrades <http://governance.openstack.org/reference/tags/assert_supports-rolling-upgrade.html>`_, and/or `rolling upgrades <http://governance.openstack.org/reference/tags/assert_supports-rolling-upgrade.html>`_,
where applicable. This means having grenade support on top of the CI where applicable. This means having grenade support on top of the CI
coverage as described above. coverage as described above.
* Client bindings and CLI developed according to the OpenStack Client `plugin model <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_. * Client bindings and CLI developed according to the OpenStack Client `plugin model <http://docs.openstack.org/developer/python-openstackclient/plugins.html>`_.
On top of the above mentioned criteria, the following also are taken into On top of the above mentioned criteria, the following also are taken into
consideration: consideration:
* A project must use, adopt and implement open software and technologies. * A project must use, adopt and implement open software and technologies.
* A project must integrate with Neutron via one of the supported, advertised * A project must integrate with Neutron via one of the supported, advertised
and maintained public Python APIs. REST API does not qualify (the project and maintained public Python APIs. REST API does not qualify (the project
python-neutronclient is an exception). python-neutronclient is an exception).
* It adopts neutron-lib (with related hacking rules applied), and has proof * It adopts neutron-lib (with related hacking rules applied), and has proof
of good decoupling from Neutron core internals. of good decoupling from Neutron core internals.
* It provides an API that adopts API guidelines as set by the Neutron core * It provides an API that adopts API guidelines as set by the Neutron core
team, and that relies on an open implementation. team, and that relies on an open implementation.
* It adopts modular interfaces to provide networking services: this means * It adopts modular interfaces to provide networking services: this means
that L2/7 services are provided in the form of ML2 mech drivers and that L2/7 services are provided in the form of ML2 mech drivers and
service plugins respectively. A service plugin can expose a driver service plugins respectively. A service plugin can expose a driver
interface to support multiple backend technologies, and/or adopt the interface to support multiple backend technologies, and/or adopt the
flavor framework as necessary. flavor framework as necessary.
Adding or removing projects to the Stadium Adding or removing projects to the Stadium
------------------------------------------ ------------------------------------------
@ -179,112 +179,112 @@ enhancements.
Checklist Checklist
--------- ---------
* How to integrate documentation into docs.o.o: The documentation * How to integrate documentation into docs.o.o: The documentation
website has a section for `project developer documentation <http://docs.openstack.org/developer/openstack-projects.html>`_. website has a section for `project developer documentation <http://docs.openstack.org/developer/openstack-projects.html>`_.
Each project in the Neutron Stadium must have an entry under the Each project in the Neutron Stadium must have an entry under the
'Networking Sub Projects' section that points to the developer 'Networking Sub Projects' section that points to the developer
documentation for the project, available at http://docs.openstack.org/developer/<your-project>/. documentation for the project, available at http://docs.openstack.org/developer/<your-project>/.
This is a two step process that involves the following: This is a two step process that involves the following:
* Build the artefacts: this can be done by following example * Build the artefacts: this can be done by following example
https://review.openstack.org/#/c/293399/. https://review.openstack.org/#/c/293399/.
* Publish the artefacts: this can be done by following example * Publish the artefacts: this can be done by following example
https://review.openstack.org/#/c/216448/. https://review.openstack.org/#/c/216448/.
More information can also be found on the More information can also be found on the
`project creator guide <http://docs.openstack.org/infra/manual/creators.html#add-link-to-your-developer-documentation>`_. `project creator guide <http://docs.openstack.org/infra/manual/creators.html#add-link-to-your-developer-documentation>`_.
* How to integrate into Grafana: Grafana is a great tool that provides * How to integrate into Grafana: Grafana is a great tool that provides
the ability to display historical series, like failure rates of the ability to display historical series, like failure rates of
OpenStack CI jobs. A few examples that added dashboards over time are: OpenStack CI jobs. A few examples that added dashboards over time are:
* `Neutron <https://review.openstack.org/#/c/278832/>`_. * `Neutron <https://review.openstack.org/#/c/278832/>`_.
* `Networking-OVN <https://review.openstack.org/#/c/335791>`_. * `Networking-OVN <https://review.openstack.org/#/c/335791>`_.
* `Networking-Midonet <https://review.openstack.org/#/c/315033>`_. * `Networking-Midonet <https://review.openstack.org/#/c/315033>`_.
Any subproject must have a Grafana dashboard that shows failure Any subproject must have a Grafana dashboard that shows failure
rates for at least Gate and Check queues. rates for at least Gate and Check queues.
* How to integrate into neutron-lib's CI: there are a number of steps * How to integrate into neutron-lib's CI: there are a number of steps
required to integrate with neutron-lib CI and adopt neutron-lib in required to integrate with neutron-lib CI and adopt neutron-lib in
general. One step is to validate that neutron-lib master is working general. One step is to validate that neutron-lib master is working
with the master of a given project that uses neutron-lib. For example with the master of a given project that uses neutron-lib. For example
`patch <https://review.openstack.org/#/c/338603/>`_ introduced such `patch <https://review.openstack.org/#/c/338603/>`_ introduced such
support for the Neutron project. Any subproject that wants to do the support for the Neutron project. Any subproject that wants to do the
same would need to adopt the following few lines: same would need to adopt the following few lines:
#. https://review.openstack.org/#/c/338603/4/jenkins/jobs/projects.yaml@4685 #. https://review.openstack.org/#/c/338603/4/jenkins/jobs/projects.yaml@4685
#. https://review.openstack.org/#/c/338603/3/zuul/layout.yaml@8501 #. https://review.openstack.org/#/c/338603/3/zuul/layout.yaml@8501
#. https://review.openstack.org/#/c/338603/4/grafana/neutron.yaml@39 #. https://review.openstack.org/#/c/338603/4/grafana/neutron.yaml@39
Line 1 and 2 respectively add a job to the periodic queue for the Line 1 and 2 respectively add a job to the periodic queue for the
project, whereas line 3 introduced the failure rate trend for the project, whereas line 3 introduced the failure rate trend for the
periodic job to spot failure spikes etc. Make sure your project has periodic job to spot failure spikes etc. Make sure your project has
the following: the following:
#. https://review.openstack.org/#/c/357086/ #. https://review.openstack.org/#/c/357086/
#. https://review.openstack.org/#/c/359143/ #. https://review.openstack.org/#/c/359143/
* How to port api-ref over to neutron-lib: to publish the subproject * How to port api-ref over to neutron-lib: to publish the subproject
API reference into the `Networking API guide <http://developer.openstack.org/api-ref/networking/>`_ API reference into the `Networking API guide <http://developer.openstack.org/api-ref/networking/>`_
you must contribute the API documentation into neutron-lib's api-ref you must contribute the API documentation into neutron-lib's api-ref
directory as done in the `WADL/REST transition patch <https://review.openstack.org/#/c/327510/>`_. directory as done in the `WADL/REST transition patch <https://review.openstack.org/#/c/327510/>`_.
Once this is done successfully, a link to the subproject API will Once this is done successfully, a link to the subproject API will
show under the published `table of content <https://github.com/openstack/neutron-lib/blob/master/api-ref/source/index.rst>`_. show under the published `table of content <https://github.com/openstack/neutron-lib/blob/master/api-ref/source/index.rst>`_.
An RFE bug tracking this effort effectively initiates the request An RFE bug tracking this effort effectively initiates the request
for Stadium inclusion, where all the aspects as outlined in this for Stadium inclusion, where all the aspects as outlined in this
documented are reviewed by the PTL. documented are reviewed by the PTL.
* How to port API definitions over the neutron-lib: the most basic * How to port API definitions over the neutron-lib: the most basic
steps to port API definitions over to neutron-lib are demonstrated steps to port API definitions over to neutron-lib are demonstrated
in the following patches: in the following patches:
* https://review.openstack.org/#/c/353131/ * https://review.openstack.org/#/c/353131/
* https://review.openstack.org/#/c/353132/ * https://review.openstack.org/#/c/353132/
The `neutron-lib patch <https://review.openstack.org/#/c/353131/>`_ The `neutron-lib patch <https://review.openstack.org/#/c/353131/>`_
introduces the elements that define the API, and testing coverage introduces the elements that define the API, and testing coverage
validates that the resource and actions maps use valid keywords. validates that the resource and actions maps use valid keywords.
API reference documentation is provided alongside the definition to API reference documentation is provided alongside the definition to
keep everything in one place. keep everything in one place.
The `neutron patch <https://review.openstack.org/#/c/353132/>`_ The `neutron patch <https://review.openstack.org/#/c/353132/>`_
uses the Neutron extension framework to plug the API definition uses the Neutron extension framework to plug the API definition
on top of the Neutron API backbone. The change can only merge when on top of the Neutron API backbone. The change can only merge when
there is a released version of neutron-lib. there is a released version of neutron-lib.
* How to integrate into the openstack release: every project in the * How to integrate into the openstack release: every project in the
Stadium must have release notes. In order to set up release notes, Stadium must have release notes. In order to set up release notes,
please see the patches below for an example on how to set up reno: please see the patches below for an example on how to set up reno:
* https://review.openstack.org/#/c/320904/ * https://review.openstack.org/#/c/320904/
* https://review.openstack.org/#/c/243085/ * https://review.openstack.org/#/c/243085/
For release documentation related to Neutron, please check the For release documentation related to Neutron, please check the
`Neutron policies document <http://docs.openstack.org/developer/neutron/#neutron-policies>`_. `Neutron policies document <http://docs.openstack.org/developer/neutron/#neutron-policies>`_.
Once, everything is set up and your project is released, make sure Once, everything is set up and your project is released, make sure
you see an entry on the release page (e.g. `Ocata <http://releases.openstack.org/ocata/index.html#other-projects>`_. you see an entry on the release page (e.g. `Ocata <http://releases.openstack.org/ocata/index.html#other-projects>`_.
Make sure you release according to the project declared release Make sure you release according to the project declared release
`model <http://governance.openstack.org/reference/projects/neutron.html#deliverables-and-tags>`_. `model <http://governance.openstack.org/reference/projects/neutron.html#deliverables-and-tags>`_.
* How to port OpenStack Client over to python-neutronclient: client * How to port OpenStack Client over to python-neutronclient: client
API bindings and client command line interface support must be API bindings and client command line interface support must be
developed in python-neutronclient under `osc module <https://github.com/openstack/python-neutronclient/tree/master/neutronclient/osc/v2>`_. developed in python-neutronclient under `osc module <https://github.com/openstack/python-neutronclient/tree/master/neutronclient/osc/v2>`_.
If your project requires one or both, consider looking at the If your project requires one or both, consider looking at the
following example on how to contribute these two python-neutronclient following example on how to contribute these two python-neutronclient
according to the OSC framework and guidelines: according to the OSC framework and guidelines:
* https://review.openstack.org/#/c/340624/ * https://review.openstack.org/#/c/340624/
* https://review.openstack.org/#/c/340763/ * https://review.openstack.org/#/c/340763/
* https://review.openstack.org/#/c/352653/ * https://review.openstack.org/#/c/352653/
More information on how to develop python-openstackclient plugins More information on how to develop python-openstackclient plugins
can be found on the following links: can be found on the following links:
* http://docs.openstack.org/developer/python-openstackclient/plugins.html * http://docs.openstack.org/developer/python-openstackclient/plugins.html
* http://docs.openstack.org/developer/python-openstackclient/humaninterfaceguide.html * http://docs.openstack.org/developer/python-openstackclient/humaninterfaceguide.html
It is worth prefixing the commands being added with the keyword It is worth prefixing the commands being added with the keyword
`network <https://review.openstack.org/#/c/340624/10/setup.cfg>`_ to `network <https://review.openstack.org/#/c/340624/10/setup.cfg>`_ to
avoid potential clash with other commands with similar names. This avoid potential clash with other commands with similar names. This
is only required if the command object name is highly likely to have is only required if the command object name is highly likely to have
an ambiguous meaning. an ambiguous meaning.