Creates multiple worker processes for API server

This change to the WSGI code uses openstack.common.service to create
multiple worker processes to handle API load.  The main process will
start up a configurable (workers=??) number of child processes which
will all listen on the bind port.  The main process becomes the parent
and manages the children.  The parent is not a worker.

Backwards compatibility is preserved by setting api_workers to 0, the
default.  In this case, no separate worker processes are spawned and
the worker threads run in the main process.

Implement blueprint multi-workers-for-api-server

Change-Id: Iffa76041d0055840ccca852814b0e71f17a950ac
Disassociate floating IPs from port on terminate

Bugfix - floating IPs were left associated after VM
was terminated. Now call disassociate_floatingips
within delete_port as in other networking plugins.

Add L3NatDBIntTestCase suite to cover the
floating IP disassociation case, and fix all failing
tests from that suite.

Change-Id: I856c46631e495d513065fc9e987898408441a21e
Closes-Bug: #1231913
Imported Translations from Transifex

Change-Id: I4f7b102d72ac375e0c42eb1e23d777f25b93c17a
Raise ConfigFilesNotFoundError if CONF.api_paste_config not found

Otherwise it shows an incomprehensible message
"'NoneType' object has no attribute 'startswith'."

Change-Id: I5d87c4ceac69b26730d63727a2ec3701ccc9cecb
Closes-bug: 1236182
Prevent L3 agent looping calls from hanging

This patch adopts several measures to prevent _sync_routers_task
and _rpc_loop from hanging because of subprocess.Popen.communicate
not returning.

1) Perform a sleep everytime a command is completed, similarly to
what is done in openstack.common.processutils.execute
2) Disable by default GARP, as kernel crashes caused by arping
have been observed
3) Prevent a non-critical keyerror in _router_removed from triggering
again a full sync, which might put the system under significant load.

This patch also adds debug log statements aimed at improving the
ability of debugging similar failures.

Change-Id: I003316bce0f38b7d2ea7d563b5a0a58676834398
Partial-Bug: 1224001
Merge "Imported Translations from Transifex"
Merge "Disassociate floating IPs from port on terminate"
Merge "Prevent L3 agent looping calls from hanging"
Fix dhcp_release lease race condition

There is a possible race condition when delete or updating fixed_ips
on ports where an instance could renew its ip address again after
dhcp_release has already been executed. To fix this, the order of
reload_allocation and release_lease need to be switched. This way an
instance will not be able to renew it's ip address after it is
removed from the host file.

Fixes bug: 1237028

Change-Id: If05ec2be507378c634f5c1856dab0fbd396f43cc
Add quota table in PLUMgrid plugin

Quota DB driver is enabled in Neutron by default.
PLUMgrid plugin was missing the "quota" table. It has
been added in this commit.

Fix bug# 1236970

Change-Id: I5170a8be2b412a3bcf1edcacce5574f0073b84d4
Utilizes assertNotIn

Using assertTrue and the 'not in' operator to test
if an element is in a sequence is too python2.4.
Our unit testing framework supports assertNotIn
which was created for these types of tests.

Fixes bug #1230028

Change-Id: Ibaf6c73c514b9ad27f8f37eb3f1043e31dbfdcc1
Utilizes assertIn

Using assertTrue and the 'in' operator to test
if an element is in a sequence is too python2.4.
Our unit testing framework supports assertIn
which was created for these types of tests.

Fixes bug #1230028

Change-Id: I8a9147fa9982644067ff45c73e116d88845e47e3
Merge "Raise ConfigFilesNotFoundError if CONF.api_paste_config not found"
Imported Translations from Transifex

Change-Id: I7ff99a23bc300d05d06ffa2d0ccc9f5742216155
Simplify using external routers and metadata

The dhcp agent only pushes out the metadata
static route when the subnet is isolated, and it
determines that by checking if the gateway_ip is
not set. This makes it tricky to use external
routers and metadata from dhcp at the same time.

This patch changes how the dhcp agent determines
that the subnet is isolated. It now considers it
isolated if there is no Neutron router on it.
This makes it straightforward to use an external
router on a provider network and get the
metadata from the dhcp namespace.

Change-Id: I0e29a2f058564c267176dab26da00f6ef579808b
Closes-Bug: 1236783
Merge "Utilizes assertNotIn"
Correct the typo %{edge_id)s

Use %(edge_id)s instead of %{edge_id)s.

Change-Id: Id8376ff8ec50e3022f9aca9b8954d8044d849f64
Fallback to Quota Conf Driver if Quotas table is not defined

commit de15e0b9c5 enabled Quota DB driver default considering
production environments, but it breaks plugins without per-tenant
quota extension. In these plugin quotas tables is not loaded.

This commit fallbacks to ConfDriver if Quota model is not loaded by
checking neutron.db.quota_db which defines Quota model is imported.

Change-Id: Idaaaa9810598cfd3e5ce70020f498643b4819d16
Closes-Bug: #1236993
use proxy mode on vxlan interface only when l2-population is activated

the proxy mode was set by default on every vxlan interfaces
which leads to inaccessibility between VM that are not hosted
on the same host in a vxlan network

Closes-Bug: #1237082

Change-Id: I34028ee0bdfdccda61c6a29f58759259da060b68
Merge "Imported Translations from Transifex"