object-ify availability_zones

This change converts availability_zones to use the Aggregate and
Service objects instead of direct database access.

Related to blueprint compute-manager-objects-juno

Change-Id: I2ec7373f063ed728dde2af3b7c8259f4391885bc
Fix error status code for agents

When passing bad body in a request, most APIs return BadRequest response.
However, agents API doesn't do it.
This patch fixes the error status code and adds a unit test related to
this change.

This patch's idea most came from
Ken'ichi Ohmichi's patch https://review.openstack.org/#/c/107266/

Change-Id: I9602183ade4d3c0105e2498aebb7e33eb72f86f0
Make quotas APIv2 extension use Quotas object for create/update

This makes the quotas extension use the Quotas object for the
create/update operations instead of direct database access.

Related to blueprint compute-manager-objects-juno

Change-Id: Ia2db239d721c9ea680e11409e5eefc59e0dee941
Make quotas APIv3 extension use Quotas object for create/update

This makes the quotas extension use the Quotas object for the
create/update operations instead of direct database access.

Related to blueprint compute-manager-objects-juno

Change-Id: I74295a6f8ebca46421eafedbb28e677d2361c2b8
Update database columns nullable to match model

Some columns were created with a different nullable value than the model
defines.

Closes-Bug: 1343331
Change-Id: Iafc72e571648ba1763f457ae00ac84a63c94e0cd
Remove unused cell_scheduler_method

This key isn't used anywhere in the code (it's use was removed a while ago).

Change-Id: Icf215b5dd0c7b93b336b6bb030f3a9282a0b05bd
Method to filter non-root block device mappings

Adding a generator that would provide a non-root block device
mappings, when it's optional variable exclude_root_mapping is
set to true. Otherwise, all mappings will be returned.

The method will be used to handle LXC volumes, as it's root FS
should be handled differently.

Change-Id: I879916021c3b61f19dd69ff11838dbbac19f72d1
Related-Bug: #1269990
Increase min required libvirt to 0.9.11

Increase the min required libvirt version to 0.9.11 since
we require that for libvirt-python from PyPI to build
successfully. Kill off the legacy CPU model configuration
and legacy OpenVSwitch setup code paths only required by
libvirt < 0.9.11

Closes-Bug: #1254727
DocImpact
Change-Id: Ibe8d2117e1246e4097d1bedeadcd6d99618f8400
Allow dhcp_server to be set from new field

Now that dhcp_server and gateway can be different, update dnsmasq
to hand out the gateway if we have a single ip address and they
don't match.

Partially-implements blueprint better-support-for-multiple-networks

Change-Id: Id040ce1fb0f889418815568ff6c80402b69bf09e
Merge "Update database columns nullable to match model"
Merge "Increase min required libvirt to 0.9.11"
Merge "Method to filter non-root block device mappings"
Merge "Make quotas APIv2 extension use Quotas object for create/update"
Merge "Make quotas APIv3 extension use Quotas object for create/update"
Merge "Fix error status code for agents"
Merge "object-ify availability_zones"
Merge "Remove unused cell_scheduler_method"
Merge "Allow dhcp_server to be set from new field"