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
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
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
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
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 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
Fix mistake in usage drop_constraint parameters

In migration e197124d4b9_add_unique_constrain mistake in usage
drop_constraint parameter type_ and positional arguments name
and table_name.

The same mistake was already fixed in migration
63afba73813_ovs_tunnelendpoints_id_unique.

Change-Id: I6a250e55ea53048bb11afd71fecf94da6f0c7421
Closes-bug: #1257607
Fix extension description and remove unused exception

Change-Id: Id0a40a8decb46e306256196c7fc79d687d4f8075
Closes-Bug: #1267841
Remove extra whitespace

Remove an extra whitespace in the __str__ routine for the
VifPort class

Change-Id: Ie4a7d011af1697d2e6f523dfe00244aaa42d5127
Make timeout for ovs-vsctl configurable

This patch adds a new configuration variable for the timeout on
ovs-vsctl commands, and sets the default timeout to 10 seconds.
This is aimed at allowing users to tune the agents in order to avoid
timeout errors on their deployments.

Change-Id: I73ea0d0de49a4b4a118bc2d68ad9c093ea122717
Closes-Bug: #1254520
Merge "Add VXLAN example to ovs_neutron_plugin.ini"
Merge "Remove extra whitespace"
Merge "Fix extension description and remove unused exception"
Merge "Remove FWaaS Noop driver as default and move to unit tests dir"