Don't fail when trying to unbind a router

If a router is already unbound from an l3 agent, don't fail.  Log
the condition and go on.  This is harmless since it can happen
due to a delete race condition between multiple neutron-server
processes.  One delete request can determine that it needs to
unbind the router.  A second process may also determine that it
needs to unbind the router.  The exception thrown will result
in a port delete failure and cause nova to mark a deleted instance
as ERROR.

Change-Id: Ia667ea77a0a483deff8acfdcf90ca84cd3adf44f
Closes-Bug: 1367892
Add missing methods to NoopFirewallDriver

The fix adds missing methods into generic Firewall class
and in NoopFirewall driver class.

Change-Id: I6402448075ed414434dc007f5c403fc85b6b1456
Closes-Bug: #1369685
Related-Bug: #1365806
(cherry picked from commit 9a6c073656a7e0b1a26b2bca0ba381489d04e322)
Retry getting the list of service plugins

On systems that start both neutron-server and neutron-l3-agent together,
there is a chance that the first call to neutron will timeout. Retry upto
4 more times to avoid the l3 agent exiting on startup.

This should make the l3 agent a little more robust on startup but still
not ideal, ideally it wouldn't exit and retry periodically.

Change-Id: I2171a164f3f77bccd89895d73c1c8d67f7190488
Closes-Bug: #1353953
Closes-Bug: #1368152
Closes-Bug: #1368795
(cherry picked from commit e7f0b56d74fbfbb08a3b7a0d2da4cefb6fe2aa67)
Raise exception if ipv6 prefix is inappropriate for address mode

Address prefix to use with slaac and stateless ipv6 address modes
should be equal to 64 in order to work properly.
The patch adds corresponding validation and fixes unit tests
accordingly.

Change-Id: I6c344b21a69f85f2885a72377171f70309b26775
Closes-Bug: #1357084
(cherry picked from commit 0d8911115e1b722da2f1e92f444e53b22223ee32)
Allow reading a tenant router's external IP

Adds an external IPs field to the external gateway information
for a router so the external IP address of the router can be
read by the tenant.

DocImpact

Closes-Bug: #1255142
Change-Id: If4e77c445e9b855ff77deea6c8df4a0b3cf249d4
(cherry picked from commit c7baaa068ed1d3c8b02717232edef60ba1b655f6)
Forbid update of HA property of routers

While the HA property is update-able, and resulting router-get
invocations suggest that the router is HA, the migration
itself fails on the agent. This is deceiving and confusing
and should be blocked until the migration itself is fixed
in a future patch.

Change-Id: I4171ab481e3943e0110bd9a300d965bbebe44871
Related-Bug: #1365426
Closes-Bug: #1378525
(cherry picked from commit 1fd7dd99ca7e5e9736200360aa354cada7fb43ff)
Merge "Add missing methods to NoopFirewallDriver" into proposed/juno
Merge "Raise exception if ipv6 prefix is inappropriate for address mode" into proposed/juno
Merge "Allow reading a tenant router's external IP" into proposed/juno
Merge "Retry getting the list of service plugins" into proposed/juno
Imported Translations from Transifex

Change-Id: I67a0eec64c0e0513df3f3e9f1f3489086f6316f9
Updated from global requirements

Change-Id: Ifb5cac5b1529fef7862f5a63a0d1592f5bcc01d0
Removed kombu from requirements

Since we've replaced oslo-incubator RPC layer with oslo.messaging, we
don't ship any code that uses kombu.

Change-Id: Ia8a74f1326ecd98c47cbe447f04d475bf61e19d3
(cherry picked from commit 424c7faa75d96950d80f49f20f5414d1a297af72)
Merge "Updated from global requirements" into proposed/juno
Merge "Removed kombu from requirements" into proposed/juno
Skip IPv6 Tests in the OpenContrail plugin

Similar to the way we are skipping tests in the OneConvergence plugin,
introduced by Kevin Benton in 9294de441e684a81f6e802ba0564083f1ad319d6.

Partial-Bug: #1378952

Change-Id: I1650b0708af73ce63e92c55bc842607bb69efe60
(cherry picked from commit 67962943969bc737a3f680a0defc2fc9df03c429)
Disable PUT for IPv6 subnet attributes

In Juno we are not ready for allowing the IPv6 attributes on a subnet
to be updated after the subnet is created, because:
- The implementation for supporting updates is incomplete.
- Perceived lack of usefulness, no good use cases known yet.
- Allowing updates causes more complexity in the code.
- Have not tested that radvd, dhcp, etc. behave OK after update.

Therefore, for now, we set 'allow_put' to False for the two IPv6
attributes, ipv6_ra_mode and ipv6_address_mode. This prevents the
modes from being updated via the PUT:subnets API.

Closes-bug: #1378952

Change-Id: Id6ce894d223c91421b62f82d266cfc15fa63ed0e
(cherry picked from commit 8a08a3cb47d0dd69d4aa2e8fa661d04054fe95ae)
Add database relationship between router and ports

Add an explicit schema relationship between a router and its ports. This
change ensures referential integrity among the entities and prevents orphaned
ports.

Change-Id: I09e8a694cdff7f64a642a39b45cbd12422132806
Closes-Bug: #1378866
(cherry picked from commit 93012915a3445a8ac8a0b30b702df30febbbb728)
Add Juno release milestone

Change-Id: Iea584b00329d9474c14847db958f8743d4058525
Closes-Bug: #1378855
(cherry picked from commit 4e8a5b7de71ba6f8c050c424613c025310498940)
Remove two sets that are not referenced

The code no longer references the updated_routers and removed_routers
sets.  This should have been cleaned up before but was missed.

Closes-bug: #1232525

Change-Id: I0396e13d2f7c3789928e0c6a4c0a071b02d5ff17
(cherry picked from commit edb26bfcddf9d9a0e95955a6590d11fa7245ea2b)