Add support for router scheduling in Cisco N1kv Plugin

Added functionality for router and network scheduling
in Cisco N1kv Plugin.

Change-Id: I1a8d27670d10ca26fb62a8d02230a1aaf3e7bbca
Closes-Bug: #1286412
Correctly inherit __table_args__ from parent class

Where unique constraints are added to certain tables by populating
__table_args__, we need to ensure we inherit the top level
__table_args__ that define the default storage engine to use when
creating tables.

Change-Id: Ib886b84922830b60282b4f882591e43f5041e713
Fixes: bug 1288358
Fix _validate_mac_address method

The method _validate_mac_address previously used: netaddr.EUI(data)
which would convert data passed in to the correct mac_address representation.
For example if data=123 it would return: EUI('00-00-00-00-00-7B'). To fix
this issue I used netaddr.valid_mac() instead which returns a bool if a mac is
valid or not and does not raise. Note this file needs some improvements to
improve how exception handling is done that will come later.

Change-Id: I4fb868e40abbad9e743028cc768f47ca9b3e0e70
Closes-bug: 1291163
ML2 Cisco Nexus MD: Support portchannel interfaces

Port of port-channel interface support that was implemented for the cisco
core plugin - https://review.openstack.org/#/c/42037

Note that additional port-channel UT already existed. (Created during
initial cisco core nexus subplugin -> ml2 cisco nexus md port.)
See test_cisco_nexus.py module, NEXUS_PORTCHANNELS references.

Closes-Bug: 1294900
Change-Id: Ifc64f605e5783ee1e85d66c87f422f64b47fa996
Deals with fails in update_*_postcommit ops

It makes all mechanism drivers called even when one
of the mechanism drivers fails during a post commit
operation for updating network/subnet/port. This is
a stopgap measure until a more comprehensive approach
is adopted and implemented.

Change-Id: Ia9080a91ce768d4007b0525548acfe7443a2973c
Partial-Bug: 1227336
OFA agent: use hexadecimal IP address in tunnel port name

The remote IP address is used to form the tunnel port name
With some OVS/Linux combinations there is a 15 character limit
on port names, so a name like 'gre-192.168.10.10' does not work.
This fix uses the shorter hexadecimal representation of
the IP address instead.
This problem was reported and fixed for OVS agent.

Closes-Bug: 1294474

Change-Id: Ieab1eb8a5c430f69aff61a317cc28f23ba95ad2d
Remove duplicated tests for check_ovs_vxlan_version

test_ovs_lib, test_ovs_neutron_agent and test_ofa_neutron_agent
have duplicated same unit tests for check_ovs_vxlan_version.
This commits removes tests from ovs/ofa_neutron_agent.

Change-Id: Ia028a4afc1c8154f895187c979d23b626ab4ae3a
Closes-Bug: #1301337
Delete routers that are requested but not reported as active

There are two cases that I can think of that result in a router being
requested but not reported as active.  One is that admin_state_up has
been set to False.  In this case, the router is never removed and
continues to be operational.

The other case is if a router is changed and then deleted before the
change is processed.  In this case, it is prudent to be sure that the
router is queued for deletion.

Change-Id: I4738f599a18f0d130cc8ad4d4dafc488eec75ffd
Closes-Bug: #1215387
Clean out namespaces even if we don't delete namespaces

Even when we don't enable namespace deletion, we still want to run the
code that cleans out the namespaces so that the devices get unplugged,
etc.  Otherwise, routers deleted while the agent is down will continue
to operate as if they were never deleted.

The trade-off to consider here is that if there are many stale
namespaces this will slow down the restart of the L3 agent.  The best
option is to get namespace deletion working correctly.  However, where
that has not been worked out yet, this patch provides the cleaning
service for deleted routers.

Change-Id: Ic7b4608a23c4d9530f521d5faff3f8526200b92e
Closes-Bug: #1301042
Related-Bug: #1052535
lb-agent: fix get_interfaces_on_bridge returning None

Change get_interfaces_on_bridge() to return [] instead of None
if the bridge is not found, as callers are expecting an iterator.

Change-Id: I359a2a0cf932c049f6891d4ba3eb8b9b23ab360d
Related-Bug: 1284311
OFAgent: Avoid re-wiring ports unnecessarily

Port the following patch to OFAgent.
commit: a9050757d94009c68f06c9f374de33eefbf06aa9
https://review.openstack.org/#/c/63558/

Partial-Bug: 1293265

Change-Id: I35d58bad104b01136c2502c933475ac85a3752a5
Add common base class for agent functional tests

Refactor the functional tests a bit to add a common base class for agent
tests. This is needed an upcoming commit which adds a functional test
for VXLAN version checking.

Closes-Bug: #1301363

Change-Id: I438e401cbfb40e5557e5125f2a409bac5c1fd1c2
Merge "Delete routers that are requested but not reported as active"
set api.extensions logging to ERROR in unit tests

neutron.api.extensions generates a lot of output in a normal
unit test run. It's responsible for > 80% of the lines in the
subunit_log.txt. Logging each file load 10k times slows everything
down, takes up valuable memory, and doesn't really help with testing.

Instead we can set this to ERROR level in a fixture to ignore most
of that logging and help make the unit tests run faster.

Change-Id: I86b41f20342b4080859ee036220ddffa200f0562
Updated from global requirements

Change-Id: I576919f28d7dd1a04ce1a3795bbf940b82d0d76f
Set the log level to debug for loading extensions

Setting the log level to debug instead of info
for load extension file.

Change-Id: Ia2322a5d62381f15b4bf4e0bb7120813be985786
Fix wrong section name "security_group" in sample config files

The section name [security_group] in Sample config files of
ML2 and Big Switch plugins was wrong and it should be
[securitygroup].

Change-Id: I8204b2f37f96a5e46038e117853ac8637a9705fd
Closes-Bug: #1304105
BigSwitch: Stop HTTP patch before overriding

Stops the default HTTPConnection patch used by the
Big Switch tests before patching HTTPConnection with
another substitution. This prevents mock from losing
track of the default patch which was resulting in it
not consistently being stopped by the stopall call in
cleanup.

This also corrects an incorrectly targeted mock for the
HTTP patch in one of the test files.

Closes-Bug: #1303605
Change-Id: Ia5b374c5f8d3a7905d915de4f1f8d4f3a6f0e58d
BSN: Remove module-level ref to httplib method

Removes a module-level variable that was just a
pointer to the httplib.HTTPConnection class. It's
purpose was to give mock.patch a target that wouldn't
affect other code using the httplib.HTTPConnection
library. However, it is unnecessary now that the
root cause of the original patches not being stopped
by mock.patch.stopall was fixed in bug 1303605 (change
Ia5b374c5f8d3a7905d915de4f1f8d4f3a6f0e58d).

Closes-Bug: #1304558
Change-Id: Idf814b075a80245bb9751466c2b58d719a1b81f3
Merge "Fix _validate_mac_address method"