Set nullable=False on tenant_id in apic_contracts table

The cisco_ml2_apic_contracts table has a tenant_id field that is not nullable
since it is the primary key. The HasTenant mixin does not allow setting
nullable=False, so use sa.Column() explicitly for this.

Change-Id: If8e96e76fad0bfcf2bfd71b0223624f1da4517c9
Closes-bug: #1342756
Race condition of L3-agent to add/remove routers

This race condition happens when repeatedly calling
l3-agent-router-add and l3-agent-router-remove
by different neutron-servers at the same time.

The primary key constraint is added for the pair of
(router_id and l3_agent_id).

During migration, verification is done if the current
records violate the PK constraint defined in this bug
fix, and sanitize the data before schema modification.

Due to different dialects of database engines, different
sql statements are executed correspondingly to do
the verification.

Change-Id: Ia541e023b757b2e77c4eec9bb1670632c7a271fa
Closes-Bug: #1230323
Fix deprecated opt in haproxy driver

If Neutron was updated from Havana, lbaas config file defines user_group
and loadbalancer_state_path in default section but since Icehouse these
settings were moved to haproxy section.
This patch adds DEFAULT group to DeprecatedOpt.

Change-Id: Ic92d4bc81ff6a3b16799414d17ac52e7a4801796
Closes-bug: #1349767
Fix wrong order of tables in downgrade

Heal migration fix bug https://bugs.launchpad.net/neutron/+bug/1336177.
Now table ml2_brocadenetworks has foreign key and downgrade
of 492a106273f8_brocade_ml2_mech_dri fails. To fix this change order
of tables in downgrade is needed.

Closes-bug: #1349810

Change-Id: Ida2ba66d35a952381f213080d417e475e18c196d
Merge "Set nullable=False on tenant_id in apic_contracts table"
Check that router info is set before calling _update_arp_entry

Change-Id: Ieec6fb01a7d48bed1042114c27527fe6ec2555e0
Closes-bug: #1350028
Merge "Fix wrong order of tables in downgrade"
Merge "Fix deprecated opt in haproxy driver"
Merge "Check that router info is set before calling _update_arp_entry"
Merge "Race condition of L3-agent to add/remove routers"
Add L3 Scheduler Changes for Distributed Routers

This patch implements the L3 Scheduler changes for the
Distributed Virtual Routers.

Partially-implements: blueprint neutron-ovs-dvr

Change-Id: I407c3d639ebdf885b1418bceac7cfc251e7eba1f
Co-Authored-By: Carl Baldwin <carl.baldwin@hp.com>
Co-Authored-By: Armando Migliaccio <armamig@gmail.com>
Merge DVR patches together