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
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 "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"
Move libvirt RBD utilities to a new file

This will make it easier to share rbd-related code with cinder and glance.
Port the applicable unit tests over from cinder.

Closes-Bug: #1346092
Co-Authored-By: Dmitry Borodaenko <dborodaenko@mirantis.com>
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Signed-off-by: Dmitry Borodaenko <dborodaenko@mirantis.com>
Change-Id: I614b8e2bf0ea9e71a73772cbabcf812b39fa8a34
Merge "Allow dhcp_server to be set from new field"
Merge "Move libvirt RBD utilities to a new file"