Rename instance_type to flavor in nova.network tree

Renames 'instance_type' to 'flavor' in the nova.network tree along with
related tests.

Note that 'instance_type_id' is part of the Instance table in the data
model and is not touched as part of this change.

Part of blueprint flavor-instance-type-dedup

Change-Id: I7319315daa77b7334f6d5509cf87faa71148f8ef
Add flavor access methods to Instance object

This adds a native interface to the Instance object to get, save, and
delete either the main or stashed flavors. This will let us migrate
code away from flavors.py and also provide us a versioned method to
handle conversion of flavors, flavor extra specs, and system_metadata
to the JSON blob that we have planned.

Related to blueprint compute-manager-objects

Change-Id: I13a4903460b05798e9c95b2148fe93e4963d6361
Move restore and rebuild operations to Flavor objects

This makes the compute_api restore and rebuild operations use
Flavor objects for their reservation and record-keeping activities.

Related to blueprint compute-manager-objects

Change-Id: If55294e0e1ce678448ee0e9e11fc7b64b5a73386
Make ec2 use Flavor object

This makes the ec2 API use the Flavor object directly. Note that
it also corrects some old usage of non-object instances along
the way.

Related to blueprint compute-manager-objects

Change-Id: Ic13746e085169b6cc0a25fa815c6894a8020c437
Handle InstanceUserDataMalformed in create server v2 api

The following patch adds missing support for handling
InstanceUserDataMalformed. In addition, it also adds test cases
in both the v2 and v3 api.

Change-Id: I1b474318248f64eed994f67c6d91db38d5579a63
Closes-bug: #1257146
Merge "Handle InstanceUserDataMalformed in create server v2 api"
Merge "Add flavor access methods to Instance object"
Merge "Move restore and rebuild operations to Flavor objects"
Merge "Make ec2 use Flavor object"
Merge "Rename instance_type to flavor in nova.network tree"
XenAPI: Speedup host_ref cannot change - get it once

The host we run on is fixed - getting this each time from XAPI
is expensive

Change-Id: Ifee9a778f3ed855ef52b001de3fc2ebbd0b972cf
XenAPI: get_info was very expensive

Getting the whole VM record is expensive and slowed down Tempest tests
significantly.  Replaced with getting each required item.

When getting power state, only need that specific value, so reduce the
calls to get_info too.

Change-Id: I93bcef5b692a531aac41518dc29d5d4f46cded65
XenAPI: Tidy calls to get_all_ref_and_rec

get_all_records is more efficient than getting them individually in the
old get_all_ref_and_rec implementation.

Replaced some cases of get_all_records with a faster and more
specific API call.

Change-Id: I4725c3f1fdebdf1737941cb7db69b19afb22df9f
XenAPI: Speedup get_vhd_parent_uuid

In many cases the VDI record has already been retrieved.
Use it rather than expensively getting a new VDI record from XAPI.

Change-Id: I469e2a415c1f1924010f47d3927ca18c45a7b8f8
XenAPI: Use get_VALUE in preference to get_record()['VALUE']

Replaces calls to get_record where only a single item is retrieved
from the record with the specific get_VALUE call.

Change-Id: I52e20c4f4c9d6a6ad019694916ee057cc96b18a6
XenAPI: Monitor the GC when coalescing

Add a new host plugin to monitor whether the garbage collector is running.
This is then used by the wait_for_vhd_coalesce function to know whether
waiting any more is likely to produce the expected results.

Increased the number of times we loop waiting for coalesce as the loop
now has knowledge that something is still happening.

Change-Id: Idcc0738945bd1aee8cdb52c9cfabd798f85c31db
Closes-bug: 1258169

Conflicts:

	nova/virt/xenapi/vm_utils.py
XenAPI: Use direct IO for writing config drive

If you don't use direct IO when writing to the device, the unplug
immediately following this may not succeed as the device may still
be in use.

Also add a sync to ensure the device is not being used at the point
of unplug.

Closes-bug: 1259163

Change-Id: I68f09835648b36772a7839af9718123a4c60734f