update DHCP agent to work with linuxbridge plug-in

Fixes bug: 1027194

Update the interface driver to use veths instead of tap devices.  This
change is compatible with the netns work.

Change-Id: Ic236f5fdeb79eb36791434999df2b731856de092
Notification for network/subnet/port create/delete/update.
blueprint quantum-notifications

Add host configuration into conf, which is determined by socket.gethostname()
function by default. Host name is part of publiser id, which is in the format
of 'network'.$host.

We add create/update/delete start and end notification for each kind of resource.
By default, the notification do nothing since the notifier driver is no_op_notifier.
We can define it in quantum.conf.

Change-Id: Ibc5eacac7a324584e6ccff120f573444932a88ef
Remove unused properties

Fixes bug 1032502.

Change-Id: I63d86788e004ac371e69c238caf38c64ee398955
Merge "Remove unused properties"
Replace openvswitch plugin's VlanMap with vlan_ids DB table.

Fixes bug 1023167.

The openswitch plugin's in-memory VlanMap is replaced with a vlan_ids
DB table similar to that used by the linuxbridge plugin. This will
prevent conflicting VLAN assignments if multiple server replicas are
run, and also sets the stage for phase 2 of the provider-networks BP
implementation that will add support for multiple physical
networks.

Unlike with the current linuxbridge plugin, the contents of the
openvswitch plugin's vlan_ids table are properly updated at startup in
case the vlan_min or vlan_max configuration variables have changed.

A new test_ovs_db test case has been added.

The primary key of the vlan_bindings table is changed from the vlan_id
to the network_id, which is now a foreign key, and network deletion is
now properly handled.

The net_id has been removed from the VlanIdInUse exception, requiring
a minor update to the linuxbridge plugin. The new NoNetworksAvailable
exception, with ResourceExhausted as its base class, is returned when
no more VLANs are available.

Change-Id: I65a2347dea5366cc0d15d98a88f40e42e1a45f4c
Merge "update DHCP agent to work with linuxbridge plug-in"
Make 4th octet of mac_range configurable.

Fix bug 1022739.
To get OUI per cluster is not realistic. So This commit
make 4th octet of mac_range configurable. By this commit,
the cloud provider can allocate OUI (3 octets)  + 1 extra octet
range (4 octets) for each cluster.

Change-Id: Ibbd27e6e7f16d73dfd3045ed60f63a38b23ea1ed
Merge "Replace openvswitch plugin's VlanMap with vlan_ids DB table."
Merge "Make 4th octet of mac_range configurable."
Exempt openstack-common from pep8 check

The openstack-common project already does its own pep8 checks; we
don't need to duplicate the effort.  This also avoids issues with
pep8 version skew between projects.

Change-Id: I50d6e1b21c743d811e44b415017ca7e19687c9c2
Use function registration for policy checks

The original policy framework allowed new policy checks to be created
through inheritance.  This is somewhat clunky and unnecessary in
Python.  This change refactors policy.py to allow new policy checks
to be registered using an @register() decorator.  One consequence is
that HttpBrain is deprecated.

Care has been taken to ensure backwards compatibility; deprecation
warnings will be emitted for uses of HttpBrain or the inheritance-
based checks.

(Pull-up from openstack-common, with deprecation of HttpBrain.)

Change-Id: I0aa78d1128e55aa7d59558c62128105c01da8f1b
Enhance Base MAC validation

Fixes bug 1033520

The base mac will now be validated when the configuration file is read.
In addition to this the following has been done:
1. checks validaity of the base mac - for example it cannot be a multicast MAC
2. adds a framework for attributes tests

Change-Id: Ibffab039ca7ee9e87eb79a7288e86401170bf129
Implementation of bp per-net-dhcp-enable

Change-Id: I81c2e6adb02921e8b80f8181a730b1cba9ffa649
RPC support for Linux Bridge Plugin and Agent

blueprint scalable-agent-comms

This is the first stage of the blueprint. This adds support to the linux bridge
plugin.

The development followed the design described in:
https://docs.google.com/document/d/1MbcBA2Os4b98ybdgAw2qe_68R1NG6KMh8zdZKgOlpvg/edit?pli=1

Change-Id: I4004c05a63ce49f020c2016c8763e73238b465a7
fix missing deallocation of gateway ip

bug 1032506

when deleting a port that uses the gateway IP, we were not removing
the IPAllocation entry, which resulted in a depedency issue when we
deleted the port that the IPAllocation entry referenced.

Change-Id: I272a6572c389ef8c12585f4b62204f5877cda078
dhcp-agent: Ryu plugin support for dhcp agent

This patch adds Ryu support to dhcp-agent.
fixes bug 1030830
Ryu devstack support is available at https://review.openstack.org/#/c/10117/

Change-Id: I3f5fbe8600b4b674834e317e158bac1856b0349c
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Merge "dhcp-agent: Ryu plugin support for dhcp agent"
Add netns to support overlapping address ranges

blueprint: dhcp-overlapping-ips

This change uses linux network namespaces to isolate dhcp interfaces so
that tenant network IP address ranges can properly overlap.

Change-Id: Iaa07e7c38d0813d07c3405884e513276e43e2afd
Merge "RPC support for Linux Bridge Plugin and Agent"
Merge "Add netns to support overlapping address ranges"