Implement Midonet Juno Network Api calls

This patch is the first in a series of converting the current midonet plugin
code to the new model described in blueprint midonet-plugin-juno. This patch
focuses specifically on the "network" handlers.

This patch also updates the midonet UT to handle the new objects that need
to be mocked with the new model.

Change-Id: I056d698ce2e312527e756ff56c962cff83a6bc04
Partially-Implements: blueprint midonet-plugin-juno
Remove duplicated check for router connect to external net

In the function get_assoc_data, we check the router which get
from _get_router_for_floatingip whether connect to external net,
but as it has already checked in _get_router_for_floatingip.

Change-Id: I0c00c480273145538d19569dc0a679e9935ad8f9
Closes-bug: #1353414
Enabled Cisco ML2 driver to use new upstream ncclient

The code is still able to handle the old, custom ncclient that
we used before. It uses the different function signatures
for the ncclient's connect() function to detect which version
is installed.

Change-Id: I09d81b424d86f4cd35ca048507f06471246b91d8
Closes-Bug: 1352635
Remove unneeded device_owner field from l2pop tuple

The DVR development added this device_owner to the middle of this
tuple during early development because it was thought to be needed.
Over the course of development, it was found to be unnecessary and
much of the code that read it from this value was removed or
obsoleted.  That job went unfinished and so this commit completes it.
This essentially restores the code to what it was before and fixes the
regression that was caused.

Change-Id: Ia901f925883b53e9880dd25688e16e0ffe402bf4
Partial-bug: #1352801
MLNX Agent: Process port_update notifications in the main agent loop

This patch changes the way mlnx agent process port_update notifications.
It does the same for the mlnx agent as was done for the ovs-agent in
I219c6bdf63b0b5e945b655677f9e28fa591f03cd.
Processing a port_update notification directly in the RPC
call may cause competition with the main RPC loop.
To prevent this problem, the actual process of ports updates is done
in the main RPC loop, whereas the RPC call merely adds the updated
port MAC address to a set of updated ports.
port_update notifications received within a single main loop iteration
will be coalesced and processed only once.

Closes-Bug: 1279655
Change-Id: I63dda60cb3cf171e5e9111a1ecf95e45e1d86362
Signed-off-by: Roey Chen <roeyc@mellanox.com>
Return port context from _bind_port_if_needed

Previously port was returned causing exception being thrown
in rpc handling code.

Change-Id: Iba498d0600d625f0469392b99ac0bc8c1f1ecff7
Closes-Bug: #1354912
ofagent: Upgrade note about firewall_driver

The corresponding devstack change: https://review.openstack.org/#/c/108915/

Related: blueprint ofagent-port-monitor
Change-Id: Ic917692d50461b1d5c4a07c988839e9f886b91d5
Removes extra indents from TestSubresourcePlugin

Removed extra indents from in front of each function in the
TestSubresourcePlugin class in test_api_v2.py so that it
meets pep8 requirements and matches up with the rest of the code.

Change-Id: Id194514d47508f8915aca18347a3c404b91a7abd
Closes-Bug: 1355100
Merge "Enabled Cisco ML2 driver to use new upstream ncclient"
Merge "ofagent: Upgrade note about firewall_driver"
Add delete operations for the ODL MechanismDriver

This commit adds delete operations (networks, subnets and ports) for the ODL MechanismDriver.
It also modifies sync_single_resource to reduce db operations.

Change-Id: I03ca04c83ac2ef9c879fbd87e74bae495daea16d
Closes-Bug: #1324450
Partial-Bug: #1325184
MLNX Agent: ensure removed ports get treated on resyncs

This patch ensures that removed ports will be cleaned up properly if exception
occurs in the daemon_loop.
It does the same for the mlnx-agent as was done for the lb-agent in
Ieada34ad315c0c29aa8462ebf041a448fde007b8.

Refactoring the daemon_loop and scan_ports in a way that -
If there's an exception, the ports that were flagged for cleaning will
be retreated in the following iteration,
unlike previous exception handling, where only existing ports
were treated in the following iteration.

Closes-Bug: 1287648
Change-Id: I3af505773aa3fdc0d17f2079ac1f1b3e93bb64a3
Signed-off-by: Roey Chen <roeyc@mellanox.com>
Merge "Remove duplicated check for router connect to external net"
NSX: fix wording for configuration option

This patch clarifies that in order to use NSX distributed
routers, the replication_mode parameter should be set to
'service'. This is already its default value, so no further
change is needed beyond clarifying wording.

Change-Id: I446c428ecf8c0bf7f6947e69562d60a7fb4383ed
Closes-Bug: #1355502
NSX: unify the two distributed routing extensions

This is done by adopting the router_extra_attributes
models. However, the NSX 'distributed' extension is
slightly different in that it is visible to tenants
and prevents router conversion (allow_put=false).

PUT requests are made return the correct HTTP code;
The access control misalignments will need to be
adjusted via rules in policy.json. This will be
properly documented.

DocImpact

Supports-blueprint: neutron-ovs-dvr

Change-Id: I35a4b54318d8169eb2c73be77ca2f30bbee08b46
Fixes an issue with FIP re-association

When the last FIP is disassociated, the namespace and
interfaces should be removed. The internal interface
wasn't removed before without problems, but now the
namespace cannot be removed with that interface present.
The fix is to remove the internal FIP interface before
removing the namespace.

Change-Id: I021c658ecde584821f67b7a8de0205e8e938bb2d
Closes-bug: 1353287
Merge "Implement Midonet Juno Network Api calls"
Merge "MLNX Agent: Process port_update notifications in the main agent loop"
Make plugin and l3plugin available as mixin's properties

This makes the code simpler and slightly more efficient.
This is a minor refactoring related to a race condition
observed when the agent is processing a router while its
interfaces are being removed.

Related-bug: #1355409

Change-Id: Ic0ce25aa6a977e28b1ab76081c74da4c46c2ca6b
Merge "Fixes an issue with FIP re-association"