neutron/doc/source/devref/index.rst
Kevin Benton 09c87425fa Prepare retry decorator to move to plugin level
Retrying mutating operations at the API layer caused a
couple of problems. First, when components would call
the core plugin using the neutron manager, they would
have to handle the retriable failures on their own or
undo any work they had done so far and allow retriable
failures to be propagated up to the API. Second, retrying
at the API makes composite operations (e.g. auto allocate,
add_router_interface, etc) painful because they have to
consider if exceptions are retriable before raising
fatal exceptions on failures of core plugin calls.

This patch begins the process of moving them down to the
core operations with a new decorator called
'retry_if_session_inactive', which ensures that the
retry logic isn't triggered if there is an ongoing transaction
since retrying inside of a transaction is normally ineffective.
Follow-up patches apply them to various parts of the code-base.

Additionally, the args and kwargs of the method are automatically
deep copied in retries to ensure that any mangling the methods
do to their arguments don't impact their retriability.

Finally, since we are leaving the API decorators in place for now,
the retry logic will not be triggered by another decorator if an
exception has already been retried. This prevents an exponential
explosion of retries on nested retry decorators.

The ultimate goal will be to get rid of the API decorators entirely
so retries are up to each individual plugin.

Partial-Bug: #1596075
Partial-Bug: #1612798
Change-Id: I7b8a4a105aabfa1b5f5dd7a638099007b0933e66
2016-09-08 14:07:08 -07:00

2.5 KiB

Developer Guide

In the Developer Guide, you will find information on Neutron's lower level programming APIs. There are sections that cover the core pieces of Neutron, including its database, message queue, and scheduler components. There are also subsections that describe specific plugins inside Neutron. Finally, the developer guide includes information about Neutron testing infrastructure.

Programming HowTos and Tutorials

effective_neutron development.environment contribute neutron_api client_command_extensions alembic_migrations

Neutron Internals

services_and_agents api_layer ml2_ext_manager calling_ml2_plugin quota api_extensions plugin-api db_layer db_models policy rpc_api rpc_callbacks layer3 l2_agents agent_extensions ovs_vhostuser quality_of_service service_extensions callbacks dns_order external_dns_integration upgrade i18n address_scopes openvswitch_firewall network_ip_availability tag provisioning_blocks retries l3_agent_extensions

Testing

fullstack_testing testing_coverage template_model_sync_test

Module Reference

Add in all the big modules as automodule indexes.

Indices and tables

  • genindex
  • modindex
  • search