Update DVR Binding when router_id changes

In this patch I modified update_dvr_port_binding to update the
binding if router_id changes.
When a new router namespace is created on a host, sync_router
will call _ensure_host_set_on_port that will update the DVR binding.
With the current code update_dvr_port_binding won't update the
binding if there's an existing binding unless the binding
vif_type is VIF_TYPE_BINDING_FAILED . There's a race when
the router namespace is destroyed and then recreated on the same
host.
The DVR binding is deleted only when the message
update_device_down is processed. If this message is processed
after the update_dvr_port_binding triggered by the namespace creation,
update_dvr_port_binding won't update the binding. When the router
interface will be detected as UP, no DVR binding will be found.

Closes-bug: #1358554
Change-Id: I37fd4ed67dc2019b57e36d082b584c517d8f67a8
Layer 3 service plugin to support hardware based routing

Change-Id: Ie8e97a6d4fde0bda7cf049696e1384586492f676
Implements: blueprint brocade-l3-svi-service-plugin
Avoid auto-scheduling for distributed routers

The reason for this is twofold:

- It may relieve contention on DB access while
  both servers and l3 agents are busy setting up
  and syncing routers down respectively.

- It prevents accidental placement of namespaces
  during the L3 sync_routers process, as auto
  scheduling without taking into account the state
  of the L3 agents, as well as the state of the
  routers being processed, may overrule the placement
  decision made during router operations.

Partial-bug: #1356121
Partial-bug: #1359326

Change-Id: Ia677ce212145d6cee65adeb1d8ae594e6ac5e34d
ofagent: Remove @author tags and update copyright notices

When writing these modules, ofagent team (kakuma, yamamoto) thought
that @author tag was OpenStack's style to represent authorships.
But it turned out to be wrong.  Acutally there seems to be a consensus
not to use them.  So, replace them back to the original Ryu-style
copyright notices.

Change-Id: Icc9fdd1850c0c1dbd354bb3312199a7f6849925a
Fix AttributeError when setting external gateway on DVR router

DVR routers will have this manager initialized only after one
or more subnets have been attached to the router. To address
the issue, make sure the manager is defined and handle the snat
rules appropriately.

This patch also makes _update_arp_entry more defensive; this is
because the arp update process can be affected by the same issue:
the router may not have internal ports at the time the request
come in. This is likely when VM's port creation and router
configuration overlap slightly.

Closes-bug: #1353006

Change-Id: Ib46852f5b264e5ef2e2d499d3351f8974e393011
Co-authored-by: Rajeev Grover <rajeev.grover@hp.com>
Add scheduler unit tests to enable bug fixes and refactoring

Improves the coverage for DVR scheduling and will allow safer bug
fixes and refactoring in follow-on patches.

Change-Id: I02d0126e31adcab88a7ee82ba1cb76f952c9a68c
Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>
Throw exception instances instead of classes

Prefer single style of throwing instances and not classes.

Change-Id: If159afcd092de5381309cbe217d64145ed5b45b4
Closes-Bug: #1364392
Fix metadata agent's auth info caching

metadata agent does not implement auth info cache correctly but
retrieves from keystone every time

Change-Id: Ifc1f580185d7600b48aaf80d112fc80e0c4253f2
Closes-bug: #1365352
Remove subnet_id from check_ports_exist_on_l3agent

Refactor check_ports_exist_on_l3agent so that subnet_id no longer
needs to be passed.  Instead it calls get_subnet_ids_on_router.  This
helps to pave the way for removing hints from schedule router.

Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>

Change-Id: I6e9dcb0b899294bb4cf3e3d616a0a690049c338e
Removed direct access to MessagingServer

Factory method provided by the library should be used to create a server
object. This allows to change servers internal implementation without
touching end users.

Also removed custom dispatcher. Its only purpose was to log messages.
If logging is configured accordingly all incoming messages will be
logged from oslo/messaging/_drivers/amqpdriver.py [1]

[1] http://goo.gl/nV9tcu

Closes-Bug: #1357236

Change-Id: Ic208994c5a64fd48528cb41d30a975d68d84af05
Neutron should not use the neutronclient utils module for import_class

Fixes code to use openstack.common.importutils instead.

Change-Id: Ia449f8b1d7d03f37483cfdc595ad77e71ea6598c
Closes-bug: 1366917
Merge "Layer 3 service plugin to support hardware based routing"
Merge "Add scheduler unit tests to enable bug fixes and refactoring"
Merge "Throw exception instances instead of classes"
Call unbind_snat_servicenode from schedule router

Refactor to move the call to plugin.unbind_snat_servicenode from
schedule_snat_router to _schedule_router.  This is a move to pave the
way for removing hints from schedule router.

Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>

Change-Id: I062d8cc3cb870bbaa033d5b107a7dd868dfafa19
Merge "Update DVR Binding when router_id changes"
Merge "Removed direct access to MessagingServer"
Merge "Remove subnet_id from check_ports_exist_on_l3agent"
Imported Translations from Transifex

Change-Id: I3350b2fb82e1c95ec7e9b1860c85de5c6f00f802
Changes to support FWaaS in a DVR based environment

Implementation of Spec to address the changes required for FWaaS
to work with DVR to handle:
* Perimeter Firewall support on N - S traffic
* Ensure that E - W DVR traffic is not broken.

DocImpact

Change-Id: Iba78e534ccf347ea6270aabc939a489dd40a7b9e
Implements: blueprint neutron-dvr-fwaas