Make session.py reusable

This patch get_engine() into a creation part (create_session())
and a singletonization part (get_session()). create_session() can
be used from code that connects to a DB other than nova-DB.

Change-Id: Ia4ee4336871f22cfcdb67a0417fcfb76d78b6fa3
Remove nova-volume scheduling support

Continuation of I0b540e54dbabd26901a7530035a38583bb521fda

* delete scheduler.simple
* modify scheduler.multi instead of delete to continue supporting
  I753e87fc8979fd0b62529974f00cf11fa55b3d63
* update scheduler.multi docstring
* scheduler.rpcapi bumped to 2.3
* change default scheduler to scheduler.filter_scheduler

DocImpact

part of bp delete-nova-volume

Change-Id: Ie9d9b46742b2d92cd1e9ffe982ef658907a1d411
Fix copy-paste bug in block_device_info_generation

Change-Id: If45a20d9e7cc0c332e3a3df1eaf22457f505acea
Move to a more canonicalized output from qemu-img info.

Move to a form that is all lower cased, dashes->underscores, underscores
instead of spaces which allows for better integration with python. Also
make the parser more robust to failures when encountering new fields such
as snapshot lists. Provide a new qemu img info object that can be used
to do the parsing and access the underlying attributes.

Change-Id: Ie098dbd9f06dd4ef966768e2caa128f1d09b019c
Improve EC2 describe_security_groups performance

The current implementation of EC2 describe_security_groups makes one
query per grantee group rule in _format_security_group. This will
dramatically slow down response time if users make strong use of
grantee group rules.

This patch uses just one DB query to get security groups with joined
grantee_group rules to improve the performance.

Fixes bug 1073024.

Change-Id: I34f3253bfef0eabfea39819de03a274dd6f6aaa8
Merge "Fix copy-paste bug in block_device_info_generation"
Make bdms primitive in rpcapi.terminate_instance

This patch converts bdms (a list of block device mappings) passed to
nova.compute.rpcapi.terminate_instance to primitive types that are
safe to be sent to the rpc backend.

Also fixes the fake BDM classes used in:
* nova.tests.api.ec2.test_cloud
* nova.tests.api.openstack.compute.test_server_actions
to pass through josnutils.to_primitive properly and not confuse it due
to wrongly delegated dotted lookups

fixes bug #1073240

Change-Id: I329a48c1a53dde5895a329b39f32854c286de071
Merge "Make bdms primitive in rpcapi.terminate_instance"
Merge "Move to a more canonicalized output from qemu-img info."
Fix backwards compat of rpc to compute manager

Commit dcabd6159abcdccd99e55495ec005926465007a8 changed compute
manager in a way that it will fail to respond to the older 2.X rpc
message for reserve_block_device_name. This fixes it by making
the volume_id parameter optional.

Change-Id: Ia2d353d5b195e5687917ef5f928c0c835ffe3d3a
Add some hooks for managers when service starts

Adds pre_start_hook() and post_start_hook() and fixes a couple of hard
coded binary name checks in service.py

Change-Id: I062790a88ed7f15a6f28961d6ddc1f230e19e0cb
Introduce VirtAPI to nova/virt

This patch introduces a VirtAPI class which will house
callbacks provided by the manager to the virt drivers, allowing
things such as direct database accesses to be pulled out of
the virt drivers and delegated to another service.

As a first step, this introduces an instance_update() method
and makes all the virt drivers use it instead of direct calls
to db.instance_update.*().

Change-Id: I2e40831f5cfb20a03b304097d84d592aab035ef1
Eliminates simultaneous schedule race.

Keeps host state in memory so multiple schedule attempts use the
up-to-date values that may have been modified by another greenthread.

Fixes bug 1073956

Change-Id: I69fdd9b46bde6b7408c501c42a6ef3b6dd92bbc2
Bump the base rpc version of the network api.

In d96102b we bumped the RPC version of the migrate_instance_*
calls in the network rpcapi. We did not however bump the associated
RPC version in the network manager and as such resizes are now
broken.

This commit simply bumps the RPC version of the network
manager based on the previous change.

Fixes LP Bug #1074072.

Change-Id: I4b6d6bdbcb7bb68872deee4f54b1c0636012c2cf
Merge "Fix backwards compat of rpc to compute manager"
Merge "Remove nova-volume scheduling support"
Fix Quantum v2 API method signatures

Commit d96102b6 made a change to network.api.API but rather than making
the corresponding change to network.quantumv2.api.API it appears that
it was changed to match the network manager signature instead.

Fix the quantum signatures to match the stock network API signatures.

Change-Id: I97e16f29473f3f2e3f9c53b1e2ef10e499cef29a
Merge "Bump the base rpc version of the network api."
Merge "Improve EC2 describe_security_groups performance"
Tiny resource tracker cleanup

We're going to the bother of initializing an is_deleted_instance boolean
and then not using it everywhere we can.

Change-Id: I78c037491de336999df0f7a645a6fbab5b26d88c