Properly handle empty before/after notifications in l2pop code

Change-Id: I8644bb7cc2afb3b181397a478f96927990c0a4ca
Closes-Bug: #1367881
ofagent: Fix a possible crash in arp responder

Be careful for exceptions when feeding packet-in data,
which is generated by tenant VMs and thus can not be trusted,
to Ryu packet library.

Closes-Bug: #1365255
Change-Id: Ia8bacfb55def563a1b23a47709ae72bd4fce0fce
Remove sslutils from openstack.common

This module has been imported but is not used. Let's remove it.

Change-Id: I0cafdb7ddc00ce58b0724cee293f5dad6f4a1817
Big Switch: Don't clear hash before sync

This patch removes the step of clearing the consistency
hash from the DB before a topology sync. This will ensure
that inconsistency will be detected if the topology sync
fails.

This logic was originally there to make sure the hash header
was not present on the topology sync call to the backend.
However, the hash header is ignored by the backend in a sync
call so it wasn't necessary.

Closes-Bug: #1379510
Change-Id: I2d58fa2aea3b692834d64192d06ace727c7df8a0
Remove an argument that is never used

This code was creating a dict with a gw_exists key.  I was curious to
know who was interested in receiving this information down the line.
However, no one is ever interested in that key.  It took me some time
to follow this through wondering what was going on and found only dead
ends.

Change-Id: I755d9628ab750b950b33f5dcf32ccf2a9b00800e
Avoid constructing a RouterInfo object to get namespace name

Constructing a RouterInfo object just for a string concatenation is
inefficient and adds more dependence on the class which needs
refactoring.

Change-Id: Ibaf369d6ebe9285a0c845802def59bfa26ac0fd5
Use EUI64 for IPv6 SLAAC when subnet is specified

This commit uses EUI64 for SLAAC and stateless IPv6 address
when subnet id in fixed_ip is specified.

After this patch, all the ports created on a subnet which has
ipv6_address_mod=slaac or ipv6_address_mod=dhcpv6-stateless
will use EUI64 as the address.
This patch also checks if fixed IP address is specified
for a IPv6 subnet with address mode slaac or dhcpv6-stateless
during creating or updating a port. If yes, raise InvalidInput
error to stop the port creation or update.

Remove unit test test_generated_duplicate_ip_ipv6 because
fixed_ip should not be specified for a slaac subnet.

Change-Id: Ie481cfb2f4313baf44bf1a838ebda374a5c74c6a
Closes-Bug: 1330826
Handle unused set_context in L3NatTestCaseMixin.floatingip_with_assoc

set_context which is passed to floatingip_with_assoc method
is not passed further to self._make_floatingip.

Change-Id: Iecf2ad88e4bad5b1f8fd60668401863bdeecce8f
Closes-Bug: #1378756
Minor: remove unnecessary intermediate variable

Removes an unnecessary intermediary variable and an
unnecessary list extend operation that implied previous
list members where there weren't any. There should be no
functional change. This just improves readability slightly.

Change-Id: Ice412c29be083d82e055cc0bc45ed8b97c7628d0
Catch exceptions in router rescheduler

Catch and log exceptions in router rescheduling loop
rather than just dying which would stop all future
router rescheduling attempts.

This prevents transient DB connectivity issues from
permanently breaking the rescheduler until the process
restarts.

Closes-Bug: #1375597
Change-Id: I2ab37847074fa6bbdd2b13fd03b8742996dcfc78
Merge "Big Switch: Don't clear hash before sync"
Merge "Handle unused set_context in L3NatTestCaseMixin.floatingip_with_assoc"
Merge "Catch exceptions in router rescheduler"
Race for l2pop when ports go up/down on same host

With l2pop enabled, race exists in delete_port_postcommit
when both create/update_port and delete_port deal with
different ports on the same host, where such ports are
either the first (or) last on same network for that host.
This race happens outside the DB locking zones in
the respective methods of ML2 plugin.

To fix this, we have moved determination of
fdb_entries back to delete_port_postcommit and removed
delete_port_precommit altogether from l2pop mechanism
driver.  In order to accomodate dvr interfaces, we
are storing and re-using the mechanism-driver context
which hold dvr-port-binding information while
invoking delete_port_postcommit.  We loop through
dvr interface bindings invoking delete_port_postcommit
similar to delete_port_precommit.

Closes-Bug: #1372438
Change-Id: If0502f57382441fdb4510c81a89794f57a38e696
remove E251 exemption from pep8 check

This change removes the exemption for E251 by addressing unexpected spaces
around keyword/parameter equals

Change-Id: Iff17477e37bef2a97fc58a538d08bcfc35c67751
Partial-Bug: 1329017
Merge "Remove an argument that is never used"
Call DVR VMARP notify outside of transaction

The dvr vmarp table update notification was being called inside
of the delete_port transaction in ML2, which can cause a yield
and lead to the glorious mysql/eventlet deadlock.

This patch moves it outside the transaction and adjusts it to
use an existing port dictionary rather than re-looking it up since
the port is now gone from the DB by the time it is called.

Closes-Bug: #1377241
Change-Id: I0b4dac61e49b2a926353f8478e421cd1a70be038
Merge "Race for l2pop when ports go up/down on same host"
Merge "ofagent: Fix a possible crash in arp responder"
Merge "Avoid constructing a RouterInfo object to get namespace name"