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
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
Enable one disabled tests in NEC plugin that blocked by 1229954

Enable the disabled tests in NEC plugin that blocked by 1229954
https://github.com/openstack/neutron/blob/master/neutron
/tests/unit/nec/test_security_group.py#L64

Change-Id: Id15c5b431773d05f13201cdcd126ff2fa9f6aa06
Related-Bug: #1229954
Spawn arping in thread to speed-up floating IP

Change _send_gratuitous_arp_packet() to spawn a thread to call
arping after a floating IP is assigned.  This way it doesn't
stall _process_routers() from returning quickly due to calling
pool.waitall().

Fixes Bug: 1233391

Change-Id: Id1f5eb75c222ba6a0935a294e3973292f50d0559
Fix incorrect indentations found by Pep 1.4.6+

Pep 1.4.5 had several bugs with checking indentation of
hanging and nested sets. Fix fallout.

Change-Id: Ibcb1679e0bd283feb3c1568ba214bc525575fd43
Make test_nvp_sync.SyncLoopingCallTestCase reliable

This patch removes the previous check that verified the mocked
looping call had an exact number of calls, and replaces it with a
simpler check that just verifies that the mock has been called.

As a consequence, this patch also shortens the test duration.

Closes-Bug: 1241969

Change-Id: Ia7bc66e1f2f631e46ddcbe0eacc1d5b2481274cb
Fix a copy&paste typo

Change-Id: I970d3cd51f83c963b04e24294e982a0807d1c1c3
change seld into self

Closes-Bug #1242745

Change-Id: If5cc2864dc966eacd4cf30757fd1de15d9992629
change NetworkVxlanPortRangeError to base NeutronException

Closes-Bug #1242756

Change-Id: I902fa12795cda5ca70defaeb3b6959e3a0824565
Update send_arp_for_ha default in l3_agent.ini

The default for send_arp_for_ha was 3 and is now 0.
This patch changes the comment in l3_agent.ini to
show the new default.

Change-Id: I77370350ffee6ad7b94aa7db341c062ebc0b7d89
Merge "Update send_arp_for_ha default in l3_agent.ini"
Merge "change NetworkVxlanPortRangeError to base NeutronException"
Remove uneeded variable AGENT_NAME

Fixes bug: 1243464

Change-Id: I833dd64e98c679c050aa958576c7726bfa15cc8e
Support uncompressed ipv6 address and abbreviated ipv4 address

Now neutron supports zero-compressed ipv6 address like
'2001:db8::10:10:10:0/120' and unabbreviated ipv4 address
like '10.0.0.0/24'.
This path will make neutron also support uncompressed ipv6
address and abbreviated ipv4 address. for example:
1, uncompressed ipv6 address like 'fe80:0:0:0:0:0:0:0/128'
2, ipv6 address with multiple consecutive zero like
   '2001:0db8:0:0:1::1/128' or '2001::0:1:0:0:1100/120'
3, abbreviated ipv4 address like '10/24'

Change-Id: I755e38ea11c139e15488ec60e7d5682a244ab114
Closes-Bug: #1240790
Utilizes assertIsNone and assertIsNotNone

Using assertEqual/assertNotEqual to test if an element
is or is not None is too python2.4.
Our unit testing framework supports assertIsNone and assertIsNotNone
which were created for these types of tests.

Partial-bug: #1230028

Change-Id: Ie0bddae642f7973ee8b0e00164415f8d87de387e
Fix required enum's name in migration

Enums must contain name parameter for PostgreSQL and need to be
deleted after dropping table.

Closes-Bug: #1243652
Closes-Bug: #1243213

Change-Id: I01d18ff25572bbe9e6a8b8c6ae27f250ab154734
Handle 405 error codes correctly in NVP plugin

When NVP returns a 405 error code no exception is
raised, causing the plugin to assume that everything
went well when it didn't.

Fixes bug #1243411

Change-Id: If70db05b8c6950bfa88a36c4f0c20ee80419d31d
fix nvp version validation for distributed router creation

Fix typo on major version. This was not caught during unit tests
so adds a few to ensure this does not regress.

Fix bug #1243862

Change-Id: Ie136aaa504939d8ac77dda07e3f955aed8c233f9
Fix argument mismatch failure for neutron-check-nvp-config

Use sys.argv directly.

Fix bug #1243888

Change-Id: I9cb6ca841d004baf72dd68e44be673c361c2ed05
Merge "Spawn arping in thread to speed-up floating IP"