validate if the router has external gateway interface set

If the router wants to work with vpn service, we must
make sure external gateway interface is set.

This patch cannot prevent user from clearing the gateway interface
of the router after the vpnservice is created.

Change-Id: If0f00def949b31c1e3da7a2cd055454567201e4c
Closes-Bug: #1258379
LBaaS: fix handling pending create/update members and health monitors

When agent requests loadbalancer logical config from server,
server returns only active pool members and health_monitors.
Need to make server return also members and monitors which are in pending states.

Also a small refactoring moving ACTIVE_PENDING set to common place

Change-Id: I8e10004f199f982b055da18ea7a0e5e4d11fa7fb
Closes-Bug: #1259965
LBaaS: synchronize haproxy deploy/undeploy_instance methods

When creating/deleting lbaas objects at a high rate (like tempest api tests do)
deploy/undeploy_unstance methods of haproxy namespace driver
may be executed concurrently which leads to different conflicts with
network namespaces and interfaces created by the diver.

@synchronized decorator should be used in order to ensure that only one thread
will execute one of the methods at a time.

Closes-Bug: #1260692

Change-Id: Ibe86653c20c9a4e0b4e7b3b2cefbd445428b82da
Add VXLAN example to ovs_neutron_plugin.ini

Change-Id: I512bc206f051b58ed346e1fc5247d692ba9bdba3
Update the descriptions for the log cfg opts

The existing logging config descriptions are incorrect.

This fix makes the documented config settings for verbose/debug
match their current behaviour.

Change-Id: I1a3830ca616c379cd37593fb3c3ef30a0d368cd9
Closes-Bug: #1261793
Remove FWaaS Noop driver as default and move to unit tests dir

Remove the FWaaS Noop driver as the default and raise an exception
when the fwaas_driver.ini file has an enabled flag without any
associated driver. This communicates a misconfiguration clearly.
The Noop driver is moved to unit tests where it is used.
Also some cleanups in related area.

Closes-Bug: #1250841

Change-Id: Ib6345923df05994ceffc0b1cbf265b53c23e97f1
neutron-rootwrap-xen-dom0 handles data from stdin

The neutron-rootwrap-xen-dom0 script and the netwrap plugin have been
modified to pass stdin from one to the other.

Change-Id: Ie97980873ed95f2c96eb68f8de611de1a733b130
Closes-Bug: #1259748
Dnsmasq uses all agent IPs as nameservers

Add dhcp option which provides all agent IPs
which will be used as nameserver entries when
neutron uses multiple dhcp agent per network and
when there is no dns nameserver provided by the
neutron server.

Change-Id: I639a844bba212a731616851ff479a5e735612cf8
Closes-bug: #1259482
[ML2] l2-pop MD handle multi create/delete ports

If more than one port is added or removed simultaneously, port db entry
have status BUILD or DOWN and pass to ACTIVE when agent have finish to
configured it.
l2-pop mechanism driver use events port pass to ACTIVE or DOWN to send
fdb entries. In case of port is the first or the last network port on
an agent, the flooding entry need to be add or removed.

This patch fix the method to determine how many ports are active on a
agent by adding filter on status port to be ACTIVE.

Closes-bug: #1263881
Change-Id: I9c1f8bd69dee37bc01a5d42327aa5f737998c5aa
Remove dupl. for get_resources in adv. services

There is duplication of logic related to creating API resources
for advanced services extensions. Extracted the common logic
out into a new module that can be used by the services.
There are already UT cases in the services that exercises
the logic, so no new tests were added.

Change-Id: Ib52e2de6f215a1755f11a382dc4451a05ce3b147
Closes-Bug: 1258656
Remove plugin_name_v2 and extension_manager in test_config

There are two ways to specify a core plugin and an extension manager
in the unit tests: test_config and arguments of the constructor.
Both are used and it sometimes makes it a bit difficult to debug.
This patch removes the way via test_config and makes constructor
arguments the only way to do it.

Also removes the default entries in test_config because they are
not used anywhere.

Change-Id: I491003f4246e62001e9b74743c8fbfa922088383
Closes-Bug: #1245335
VMware NSX: Fix db integrity error on dhcp port operations

If the dhcp port and network disappear, ensure that
the integrity constraint violation that results from
inserting the neutron/nsx port mapping to the DB does
not propagate the exception all the way through, but
instead is caught and handled correctly.

Closes-bug: #1265472

Change-Id: I3ae072729d579def0bd9658241eda1011a3dcfa0
LBaaS: handle NotFound exceptions in update_status callback

LBaaS agent may send update_status requests to server on objects
which were already deleted from db: this is due to creating and
deleting objects with a high rate (like tempest API tests do).
As a result errors and stacktraces appear in server and agent logs.
The proposed solution is to catch NotFound exceptions and print a warning.

Change-Id: I4446b678893d0bda578ad7ccdf3f109cb1c91b4d
Closes-Bug: #1260682
Merge "neutron-rootwrap-xen-dom0 handles data from stdin"
Merge "Remove plugin_name_v2 and extension_manager in test_config"
Add test to port_security to test with security_groups

This patch adds a missing testcase to the port_security tests to test
for creating a port with port_security_enabled=False and passing in
a security group.

Closes-bug: #1267246
Change-Id: Ifb5a5571f016a5d7c5b5075c97dc27279cd79bb7
Update lockutils and fixture in openstack.common

lockutils: included commits:
  8b2b0b7 Use hacking import_exceptions for gettextutils._
  6d0a6c3 Correct invalid docstrings
  12bcdb7 Remove vim header
  79e6bc6 fix lockutils.lock() to make it thread-safe
  ace5120 Add main() to lockutils that creates temp dir for locks
  537d8e2 Allow lockutils to get lock_path conf from envvar
  371fa42 Move LockFixture into a fixtures module
  d498c42 Fix to properly log when we release a semaphore
  29d387c Add LockFixture to lockutils
  3e3ac0c Modify lockutils.py due to dispose of eventlet
  90b6a65 Fix locking bug
  27d4b41 Move synchronized body to a first-class function
  15c17fb Make lock_file_prefix optional
  1a2df89 Enable H302 hacking check

fixture: created, included commits:
  45658e2 Fix violations of H302:import only modules
  12bcdb7 Remove vim header
  3970d46 Fix typos in oslo
  371fa42 Move LockFixture into a fixtures module
  f4a4855 Consolidate the use of stubs
  6111131 Make openstack.common.fixture.config Py3 compliant
  3906979 Add a fixture for dealing with config
  d332cca Add a fixture for dealing with mock patching.
  1bc3ecf Start adding reusable test fixtures.

Also tox.ini was corrected to let lockutils work in tests.

This change is needed for work on bp: db-sync-models-with-migrations

Closes-Bug: #1065531

Change-Id: I139f30b4767ff2c9d1f01ee728823859c09b3859
L3 Agent can handle many external networks

With this patch a l3 agent can handle
any networks by setting the neutron
parameter external_network_bridge
and gateway_external_network_id to
empty.

Related-Bug: #1234750
Related-Bug: #1194350

Change-Id: Id260a239df23951da730513f40cda490002effc3
Fix Migration 50e86cb2637a and 38335592a0dc

When the rename of quantum->neutron occurred here ee3fe4e8 it also renamed
the the table creation from quantum_nvp_port_mapping to
neutron_nvp_port_mapping. This went undetected for a long time because
when neutron-server starts up it pushes down the scheme for tables that
are not there so the table would be created.

Because of this the following migration 50e86cb2637a called
op.rename_table('neutron_nvp_port_mapping', 'neutron_nsx_port_mappings')
though the table name being used was quantum_nvp_port_mapping. Because of this
the quantum_id->nvp_id mapping was never migrated over to the new table and
you would be left with a quantum_nvp_port_mapping table hanging around.

In addition, the downgrade would rename the table to neutron_nvp_port_mapping
instead of quantum_nvp_port_mapping. This patch addresses this issues.

Change-Id: I4f80b7b9dc56996ecd83826ee65918f5311c7c4f
Closes-bug: #1267619
Fix race condition on ml2 delete and update port methods

Synchronize access to ports table when deleting and updating
a port. Otherwise concurrent update/delete request for the same port
may cause neutron server to throw an exception and return
'500 Internal server error' for such requests.

Change-Id: I868002643147ce6baace5671cffb38b4f5e66729
Closes-Bug: #1266537