OpenStack Networking (Neutron)
09c87425fa
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 |
||
---|---|---|
api-ref | ||
bin | ||
devstack | ||
doc | ||
etc | ||
neutron | ||
rally-jobs | ||
releasenotes | ||
tools | ||
.coveragerc | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
.pylintrc | ||
.testr.conf | ||
babel.cfg | ||
CONTRIBUTING.rst | ||
HACKING.rst | ||
LICENSE | ||
MANIFEST.in | ||
README.rst | ||
requirements.txt | ||
run_tests.sh | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
TESTING.rst | ||
tox.ini |
Welcome!
You have come across a cloud computing network fabric controller. It has identified itself as "Neutron." It aims to tame your (cloud) networking!
External Resources:
The homepage for Neutron is: http://launchpad.net/neutron. Use this site for asking for help, and filing bugs. Code is available on git.openstack.org at <http://git.openstack.org/cgit/openstack/neutron>.
The latest and most in-depth documentation on how to use Neutron is available at: <http://docs.openstack.org>. This includes:
- Neutron Administrator Guide
- Neutron Developer Guide
- Networking Guide
- Neutron API Reference:
- Current Neutron developer documentation is available at:
For help on usage and hacking of Neutron, please send mail to <mailto:openstack-dev@lists.openstack.org>.
For information on how to contribute to Neutron, please see the contents of the CONTRIBUTING.rst file.