xenapi: Tag volumes in boot from volume case

Fixes bug 1064134

Since https://review.openstack.org/#/c/10574, we require that all
openstack volumes are tagged, so as to distinguish them from other
disks that could be deleted on instance termination.

Change-Id: I965f88bf41d39be88f2331ad081f5cec71a65a0f
Change install_venv to use setup.py develop.

With the potential use of entry points, code from the current tree needs to
be installed into a venv created by install_venv.py via setup.py develop.
This will ensure that the appropriate meta-data and paths are set in the
virtualenv.

Change-Id: I1ca15959c98a24629d2f5b2c385296c4e2fe770c
xenapi: fix bfv behavior when SR is not attached

Fixes bug 1063920
If we try to boot from volume right after a detach volume operation
on the xensm volume driver, the SR has been disconnected. This results
in a failure to populate the vdis list. Introducing the SR if it
isn't in the xapi db fixes this.

Change-Id: I7e6b5e643ea3e20ba691141950cddfcb0ab5f3b8
Add DNS records on IP allocation in VlanManager.

Change-Id: If13f5d2902905154ce4753a45e5d5369d1bf68af
Use instance_exists to check existence

Use instance_exists instead of list_instances since commit 27c11c4bb4.

Change-Id: I780e70f6b573a15e4acc71af16695e0db8ad2581
Add Server diagnostics extension api samples

Change-Id: Id53e17caa75dcab01dd3209f771891b4e92debec
Fix error on invalid delete_on_termination value

1. Fixed 500 error when an invalid value is passed to 'delete_on_termination'
parameter in 'block_device_mapping' of create server API (json request).
Converted the value to 'bool' (similar to XML request workflow) to fix issue.
2. Also added unit test coverage.

Fixes LP: #1060955

Change-Id: Ib35040f17a3712dac45ec1e3c2f32fee17db7c03
Fix and enable pep8 E502, E712

pep8 E502 and E712 were temporarily disabld when upgrading to pep8 1.2

Change-Id: If5158304cb8e73ef844dea9f726df6f8fe305269
Fix the fail-on-zero-tests case so that it is tolerant of no output

Some ways of running run_tests.sh will not output a line for us to
parse the count from. Treat no "Ran X tests" as "Ran 0 tests".

Change-Id: I96ba13e797ceaf9b9fa2b60ccb558510b5e32a88
nova-compute sends its capabilities to schedulers ASAP

Fixes Bug 1068114.

When a nova-compute runs for the first time, after an entry in
compute_nodes table is created, it takes some time for the
capabilities to be sent to schedulers. It may make the schedulers
send unacceptable requests to the nova-compute. This patch eliminates
it by sending the capabilities before creating the entry in compute_node.

Change-Id: Id9851d9a6f0305256dfa6dfb63ab508e6f519fa2
limit the usage of connection_info

Related to blueprint xenapi-volume-drivers

The connection_info parameter, that is coming from volume contains only
two keys, 'driver_volume_type', and 'data'.
See:
https://github.com/openstack/nova/blob/master/nova/volume/manager.py#L375

parse_volume_info was checking the connection_info for 'auth_method',
and authentication parameters. These informations live inside
connection_data. This patch is fixing this, and covering with a test.

Also rename the generic data variable to connection_data, to make it
easier to read the code.

parse_volume_info thus no longer depends on the whole connection_info,
only on the connection_data.

Also clean-up some copy-paste test setup code.

Change-Id: I5289120d46176c8528c3317a650269c4f384f930
Remove mountpoint from parse_volume_info

Related to blueprint xenapi-volume-drivers

parse_volume_info method did too many things. It was checking the
connection_data for iscsi information, and also checked the mountpoint.
This change extracts the mountpoint conversion, and performs that check
earlier in the volume attach process.

Change-Id: I7c26e813319f6d9de287782ad188b22804d032a9
Handle the case where we encounter a snap shot correctly.

Fix the list in the qemu output and break out of the loop
when we encounter that instead of failing to parse.

Fixes bug 1070088.

Change-Id: I5f501c599b94e0ac13892c97d60ec740ac7e641d
Don't require quantumclient when running nova-api.

Handle ImportErrors's when importing the quantumv2 API
in the Nova API servers controller. This makes it possible
to run nova-api when quantumclient is not present.

This was recently broken in commit 83a8418 which changed how we
import the quantum v2 API class.

Fixes LP Bug #1070509.

Change-Id: I3c452c3bd88cb5b431cb23e525ff78e3d677e1a8
Refactor: move find_guest_agent to xenapi.agent

Related to blueprint xenapi-config-drive

find_guest_agent is related to agent, thus moved to that volume. With
all the agent calls in one module, making the agent optional will be as
easy as implementing a null agent.

Change-Id: I5c8cf2fd3d08518e1794a2018429162e4bd767d7
Consistent Rollback for instance creation failures

Fixes Bug 1065092

Adds a single QUOTA.rollback for all exceptions rather than performing
the rollback individually. Ensures that no stale "reservations" are left
in place after a failed instance creation.

Change-Id: I354726b651ae8feb6153d5865e0b14b54c73314b
Return empty list when listing servers with bad status value

API indicates the status parameter is a string, hence status=BALONEY is a valid
filter that should return zero records since no records match that status. The
return should be an empty list and 200 OK.

Fixes bug 1061712

Change-Id: If796110a18dd75ab5c5d4ba41e9c3b58180341f8
Remove database usage from libvirt imagecache module

This removes the database instance list operation from the libvirt
imagecache module and pushes it up into compute/manager.py.

This is a step in the proposed strategy to move db usage out of the virt
drivers up into compute/manager.py in support of bp:no-db-compute.

Change-Id: I2ea39f14304ed4b44c7ac9650703a5f780411c18
Merge "Fix and enable pep8 E502, E712"
Add better log line for undefined compute_driver

If compute_driver is undefined, the message in the log files will be an
exception ending with:

  AttributeError: 'NoneType' object has no attribute 'rpartition'

Provide a better error message instead.

Change-Id: I5f32a376d4f53b0d727e378907ad41c3499121fe