
Sometimes an object requires multiple disjoint actors to complete a set of tasks before the status of the object should be transitioned to ACTIVE. The main example of this is when a port is being created. The L2 agent has to do its business to wire up the VIF, but at the same time the DHCP agent has to setup the DHCP reservation. This led to Nova booting the VM when the L2 agent was done even though the DHCP agent may have been nowhere near ready. This patch introduces a provisioning blocks mechansim that allows the entities to be tracked that need to be involved to make a transition to ACTIVE happen. See the devref in the dependent patch for a high-level view of how this works. The ML2 code is updated to use this new mechanism to prevent updating the port status to ACTIVE without both the DHCP agent and L2 agent reporting that the port is ready. The DHCP RPC API required a version bump to allow the port ready notification. This also adds a devref doc for the provisioning_blocks module with a high-level overview of how it works in addition to a detailed description of how it is used specifically with ML2, the L2 agents, and the DHCP agents. Closes-Bug: #1453350 Change-Id: Id85ff6de1a14a550ab50baf4f79d3130af3680c8
107 lines
2.5 KiB
ReStructuredText
107 lines
2.5 KiB
ReStructuredText
..
|
|
Copyright 2010-2011 United States Government as represented by the
|
|
Administrator of the National Aeronautics and Space Administration.
|
|
All Rights Reserved.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
not use this file except in compliance with the License. You may obtain
|
|
a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
License for the specific language governing permissions and limitations
|
|
under the License.
|
|
|
|
Convention for heading levels in Neutron devref:
|
|
======= Heading 0 (reserved for the title in a document)
|
|
------- Heading 1
|
|
~~~~~~~ Heading 2
|
|
+++++++ Heading 3
|
|
''''''' Heading 4
|
|
(Avoid deeper levels because they do not render well.)
|
|
|
|
|
|
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
|
|
--------------------------------
|
|
.. toctree::
|
|
:maxdepth: 3
|
|
|
|
effective_neutron
|
|
development.environment
|
|
contribute
|
|
neutron_api
|
|
client_command_extensions
|
|
alembic_migrations
|
|
|
|
|
|
Neutron Internals
|
|
-----------------
|
|
.. toctree::
|
|
:maxdepth: 3
|
|
|
|
services_and_agents
|
|
api_layer
|
|
ml2_ext_manager
|
|
quota
|
|
api_extensions
|
|
plugin-api
|
|
db_layer
|
|
policy
|
|
rpc_api
|
|
rpc_callbacks
|
|
layer3
|
|
l2_agents
|
|
ovs_vhostuser
|
|
quality_of_service
|
|
service_extensions
|
|
oslo-incubator
|
|
callbacks
|
|
dns_order
|
|
external_dns_integration
|
|
upgrade
|
|
i18n
|
|
address_scopes
|
|
openvswitch_firewall
|
|
network_ip_availability
|
|
tag
|
|
provisioning_blocks
|
|
|
|
Testing
|
|
-------
|
|
.. toctree::
|
|
:maxdepth: 3
|
|
|
|
fullstack_testing
|
|
testing_coverage
|
|
template_model_sync_test
|
|
|
|
Module Reference
|
|
----------------
|
|
.. toctree::
|
|
:maxdepth: 3
|
|
|
|
.. todo::
|
|
|
|
Add in all the big modules as automodule indexes.
|
|
|
|
|
|
Indices and tables
|
|
------------------
|
|
|
|
* :ref:`genindex`
|
|
* :ref:`modindex`
|
|
* :ref:`search`
|