Update openstack/common/periodic_task

The following commits are in this update:

1771a77 Adjust import order according to PEP8 imports rule
4bfb7a2 Apply six for metaclass
0ea069e Removed calls to locals()
1a2df89 Enable H302 hacking check

Change-Id: I5d15d9772002a2f764acef16e28bcfa16a9760c0
Setting the xen vm device id on vm record

Currently, while setting the device_id, the hypervisor
version is being incorrectly handled since the method
get_major_minor_version expects either an int, float,
or string format. However, the xen hypervisor
version is stored in the session product_version as a tuple.
This fix correctly uses the version to set the appropriate
device_id on the vm record. Also, removing the method
get_major_minor_version as it is not needed anymore.

Closes-bug: #1260178

Change-Id: I6b1353cdb7cc856b34f02e3d3679c142ba032533
pass the empty body into the controller

This allows POST and PUT reqeusts without content-body. The
default body: None will be passed into the controller, and
will be validated in the controller, so it fixes the bug 1253089.

When the request method is GET or DELETE, the content-type
and body in the request will be ignored
.
When POST or PUT a request with body but without content-type,
it will return "unsupported the content-type provided" with
response code 400.

side-effect: The method which handle the request method: POST
or PUT must have the parameter: body. Otherwise, it will raise:
"got an unexpected keyword argument 'body'"

And some tests are updated due to this change.
The parameter: body are also added for some actions which are
mapped to the method: POST or PUT.

Closes-bug: 1253089

Change-Id: Icda59feed439625bbbe079444feeda57576ef131
Merge "Update openstack/common/periodic_task"
Merge "pass the empty body into the controller"
Merge "Setting the xen vm device id on vm record"
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
XenAPI: Allow use of clone_vdi on all SR types

All XenServer SR types support VDI.clone - even if they perform
an internal VDI.copy.  Always use the clone function if COW is
enabled.

Change-Id: I85c580fba43d3bb52149626419d0f0c03ed69145