Verify the disk file exists before running qemu-img on it.

Should resolve bug 955788, although it is a little hard to tell
because the bug is so old.

Change-Id: Ic0c47f4b6181f56a98cf58d4ebe2cc926d06d524
Add api extension to get and reset password

Password is stored in system_instance_metadata as four items with the
keys 'password_0' through 'password_3'. The extension adds a resource
endpoint with two methods:

GET v2/servers/<uuid>/os-server-password  # get_password
DELETE v2/servers/<uuid>/os-server-password # reset_password

get_password retuns:

JSON: {"password": "xxx"}
XML: <?xml version='1.0' encoding='UTF-8'?><password>xxx</password>

Note that this is intended to be an encrypted password set by the
guest. Includes api tests for json and xml. Also includes api samples.

Part of blueprint get-password

Change-Id: I6c03f9c3bc8a2c70403bbb3e57917ab9522d75bd
fix N401 errors, stop ignoring all N4* errors

We had previously been ignoring all our custom N4xx hacking.py
errors. This fixes all the N401 errors "doc strings
should not start with a space" and reduces the ignore set down
to N402 only "single line docstrings should end with period".

It also fixes the N401 parser to catch only docstrings, and
not tripple quoted string blocks used later on in a function.

Clean up a few of the more crazy uses of """ in our code

Clean up additional funky comments to make indents a bit more
consistent, and pull in lines when possible.

Change-Id: I9040a1d2ca7efda83bd5e425b95d1408b5b63577
attach/detach_volume() take instance as a parameter

Previously the methods take instance['name'] as a parameter.
With this change, ComputeDriver can lookup informations about
the instance from hypervisor (in bare-metal driver, it is a local DB)
by any other attributes of the instance.

blueprint general-bare-metal-provisioning-framework

Change-Id: Ibd0567f34ed5053909ce1a408f9cbf87516ba597
Remove unused osapi_path option

This has been unused since deprecated auth was removed. It looks like
we intended to remove this in commit ea06eff7.

Change-Id: I7a5868c42300ba92d5c8f528a447cfe3fbace297
Move global glance opts into nova.image.glance

Move the glance_host, glance_port and glance_protocol options into the
nova.image.glance module.

Also move the generate_glance_url() and generate_image_url() utility
methods there since they're the only uses of the options outside of the
module.

blueprint: scope-config-opts
Change-Id: I3beca1a65cdd902a94ddc1c512d79a4de635ef38
Move global s3 opts into nova.image.s3

s3_host and s3_port are only used in nova.image.s3.

blueprint: scope-config-opts
Change-Id: Ia841406ebe7c03b2a58392e2453118e2646ad7ce
Move cert_topic into nova.cert.rpcapi

The cert_topic opt is only used in nova.cert.rpcapi and it makes sense
for the RPC module to "own" the topic option.

blueprint: scope-config-opts
Change-Id: If3584b8e1984e0425d9f33133f9d291739b04d49
Move network_topic into nova.network.rpcapi

The network_topic opt is only used in nova.network.rpcapi and it makes
sense for the RPC module to "own" the topic option.

blueprint: scope-config-opts
Change-Id: Icd779f34df47ac6dd048b3e41995e872d8859872
Move console_topic into nova.console.rpcapi

Even though the console_topic opt is used outside nova.console.rpcapi,
it makes sense for the RPC module to "own" the topic option.

blueprint: scope-config-opts
Change-Id: I0f00927ca1c0bba7b21315240165e83e7075ebb7
Move scheduler_topic into nova.scheduler.rpcapi

The scheduler_topic opt is only used in nova.scheduler.rpcapi and it
makes sense for the RPC module to "own" the topic option.

blueprint: scope-config-opts
Change-Id: Iafb8705eb716b650b63e060fe1dd36666bcee812
Fix baremetal VIFDriver

Commit Id287f7e661 removed the nova/virt/vif.py file and the VIFDriver
base class, and erroneously stated in its commit message that baremetal
driver did not use it. This patch repeats the work of that earlier patch
by removing the import of nova.virt.vif from baremetal/vif_driver.py.

blueprint general-bare-metal-provisioning-framework

Change-Id: Ifac9510a72a028dc5d3574148f3c4a6410b1d249
Refresh instance metadata in-place

For some reason that isn't entirely clear to me, the attempt to update
instance metadata in _instance_update() results in a stale sqlalchemy
object state. This is a similar issue to the one fixed in commit:

  9fdf7552779d518af9cda4e366bf81fddb0cb6f2

For some reason, session.refresh() doesn't work for instance['metadata']
in the same way, which also raises suspicion that perhaps it's not the
right fix for system_metadata either.

This patch adds an _instance_update_metadata_in_place() method that
updates the actual instance['metadata'] list _and_ the database,
mirroring the high-level behavior of instance_metadata_update(), but
without requiring us to refresh or re-fetch the metadata or the
whole instance (as a workaround).

Fixes bug 1096653

Change-Id: Ic5a205631b1b7dce3744960ed4201dcc7b4b2ae6
Added sample tests to FlavorRxtx API.

Partially implements blueprint nova-api-samples
Fixes bug 1091743

Change-Id: I400e627cfc499b3e7bb1c88d6ce7d24b4d222b84
Fix serialization in impl_zmq.

Sync rpc from oslo-incubator to include some fixes to impl_zmq:

    https://review.openstack.org/#/c/18913/

Change-Id: I5f5c157e81026c108df04bd385776a9985d4a497
add to driver option to keep disks when instance destroyed

Adding delete_disks flag to destroy instance method.
In case it's false the driver keeps disks.
*required for blueprint rebuild-for-ha

DocImpact

Change-Id: I38c7833114d8414dff831c9cc0c04c4610dbd33a
Co-authored-by: Oshrit Feder <oshritf@il.ibm.com>
Add to libvirt driver instance_on_disk method

Added method to driver layer to validate that instance directory
accessible from the host.

part of libvirt driver support for blueprint rebuild-for-ha

DocImpact

Change-Id: I9c6a3aec99f61bd4fb6bc4b4264771e077aae96a
Co-authored-by: Oshrit Feder <oshritf@il.ibm.com>
Adds to manager init_host validation for instances location

While the compute was down the instances running on it could be
evacuated to another host. The method checks that instance host
identical to current host. Otherwise destroying it.

part of blueprint rebuild-for-ha

DocImpact

Change-Id: Ic90df2b2887ee203e6d8261084e3f97773c5d81c
Co-authored-by: Oshrit Feder <oshritf@il.ibm.com>
Merge "Refresh instance metadata in-place"
Merge "Add api extension to get and reset password"