Enforce permissions in snapshots temporary dir

Live snapshots creates a temporary directory where libvirt driver
creates a new image from the instance's disk using blockRebase.
Currently this directory is created with 777 permissions making this
directory accessible by all the users in the system.

This patch changes the tempdir permissions so they have the o+x
flag set, which is what libvirt needs to be able to write in it and

Closes-Bug: #1227027
Change-Id: I767ff5247b4452821727e92b668276004fc0f84d
Add API schema for v3 admin_password API

By defining the API schema, it is possible to separate the validation
code from the API method. The API method can be more simple.
In addition, a response of API validation error can be consistent for
the whole Nova API.

Partially implements blueprint nova-api-validation-fw

Change-Id: I97a412aa23db75e3d892a113733e732eeb8008c1
Change when exists notification is sent for rescue

The exists notification is now generated only after the rescue
operation completes successfully.

Closes-Bug:1262639
Change-Id: If79eb5065b11f28320e8a13de2ad15b2ef3119a9
Prevent Instance.refresh() from returning a new info cache

If an older node does a refresh() on an instance, conductor will
return a new copy of the InstanceInfoCache, which the client
will balk at. Instead, add a refresh() method to info_cache and
call it from Instance.refresh().

Closes-bug: #1265607
Change-Id: I6a4787a23cd851cf56958c61f8b0559a79847ca0
Translate the snapshot_pending state for old instances

Icehouse introduced an image_snapshot_pending state which Havana
compute nodes do not understand. This adds a translation for that
state when we are handling save() for a havana-era Instance object.

Closes-bug: #1265618
Change-Id: I36028defc3591cc6e31c7ba763a5c7f076832179
Let drivers override default rebuild() behaviour

The rebuild compute method currently makes separate calls to destroy()
and spawn(), but this introduces race conditions with drivers where
another compute process could claim the VM resources between destroy
and spawn. This is a particular problem for baremetal where the
planned ephemeral preservation feature requires that the rebuild
happen on the same physical node.

Partial-Bug: #1174154
blueprint: baremetal-preserve-ephemeral
Co-Authored-By: Robert Collins <rbtcollins@hp.com>
Co-Authored-By: Joe Gordon <joe.gordon0@gmail.com>

Change-Id: I5fadc27207ed5725ecf0cf6bc34a52a95af42679
Merge "Prevent Instance.refresh() from returning a new info cache"
Merge "Translate the snapshot_pending state for old instances"
Merge "Add API schema for v3 admin_password API"
Merge "Change when exists notification is sent for rescue"
Merge "Enforce permissions in snapshots temporary dir"
Merge "Let drivers override default rebuild() behaviour"