Implements config_drive as extension

Adding config drive as an extension allows users to turn it off in case they
do not want to use it. Config drive was not intended to be a part of the core
functionality.

Fixes bug 833331

Change-Id: Icf4b5a21d8cc9df0f140a1a87908ff48c447004b
Enhance nova-manage to set flavor extra specs

blueprint update-flavor-key-value

Enhance nova-manage so that it can add, delete and list key/value pairs for
flavors extra specs.

Change-Id: I0665bec6aecd7f7a1d8e845fd930f4bd5a841522
Signed-off-by: Yunhong, Jiang <yunhong.jiang@intel.com>
Include architecture in instance base options passed to the scheduler

Commit 31336b35 removed architecture from the instance base_options
passed to _schedule_run_instance().  The architecture specified in
the image is needed by a subsequent patch to the ComputeFilter which
filters compute hosts against the triple (architecture, hypervisor_type,
vm_mode).

Change-Id: I840356979e51de3a6d941fe4ae9610e488383a44
Convert fixed_ips to using instance_uuid.

This should be the second last blueprint finish-uuid-conversion change.

Change-Id: Idd47c5ed3c30af24d60eb23b8e3881d61b4c7976
Fix exception handling in libvirt attach_volume()

Currently, the real reason for a failure is dropped when attempting
to unroll the volume connection (with the exception of when it is
VIR_ERR_OPERATION_FAILED). This change uses save_and_reraise_exception()
to correct that so that the actual reason for failure gets logged.

Fixes bug 1029463

Change-Id: Id47db565c4fb5a88d1a263600b41706dd3419726
Send a full instance via rpc for finish_resize.

Change the finish_resize method of the compute rpc API to take
a full instance over rpc instead of just the instance UUID.
This cuts down on database access needed by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: I2b0c7cbd2ba9b6243c2c50e69e894d192e230491
Remove return values from some compute RPC methods

The checks_instance_lock decorator currently discards any return value
from the functions it wraps. Luckily, none of the callers of these
functions check for a return value.

Since the return values are unused, just remove them. Fixing the
decorator to return them would effectively be a change to the RPC
API.

And since we know the return value is unused, we also know that nothing
checks for the False return from checks_instance_lock() and that too
can be removed.

Change-Id: I8b49107dba51caf52665341e4977de179b6404f6
Revert "Add additional capabilities for computes"

This reverts commit bd30eb36bbf2c5164ac47256355c543f6b77e064.

From the original commit message:
" This is an interim solution to provide this functionality until
  it is replaced by more general HostAggregate functionality later
  in Folsom."

Now that general host aggregates is in, this is ready to be removed.

Partially implements blueprint general-host-aggregates

Change-Id: Ic5f418a5d15117888198c79c3a32cec8f19d1a88
Ensure instance is moved to ERROR on suspend failure

Fixes bug 1029627

Change-Id: I8b137cafe56be5f2f9ffca08c0edc1d1468bc3b1
Merge "Fix exception handling in libvirt attach_volume()"
Merge "Remove return values from some compute RPC methods"
Merge "Ensure instance is moved to ERROR on suspend failure"
Merge "Convert fixed_ips to using instance_uuid."
Merge "Send a full instance via rpc for finish_resize."
Merge "Enhance nova-manage to set flavor extra specs"
Send a full instance via rpc for finish_revert_resize.

Change the finish_revert_resize method of the compute rpc API to take
a full instance over rpc instead of just the instance UUID.
This cuts down on database access needed by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: Ibe2f8b990cc8f2a3d05e8ba8216a1e74cbcfb67b
Send a full instance via rpc for get_diagnostics.

Change the get_diagnostics method of the compute rpc API to take
a full instance over rpc instead of just the instance UUID.
This cuts down on database access needed by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: Ic4db237849230899ad5f2f0780d4c237895a6631
Remove get_instance_disk_info from compute rpcapi.

This method is no longer used in any current code, so remove it from the
client side code for the rpcapi.  The server-side code remains (the
compute manager) for backwards compatibility with older versions.

This method was previously used by the scheduler, but was removed by
some refactoring done in cac332c39645286a11c009094a86f62d02752183.

Change-Id: Icb11001ac0880ca8df67b4dd9f0fe1eaca7fa3bb
Send a full instance via rpc for get_vnc_console.

Change the get_vnc_console method of the compute rpc API to take
a full instance over rpc instead of just the instance UUID.
This cuts down on database access needed by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: I4443e65fd6a9aafdad21fda63ef04a03428288a9
Send a full instance via rpc for inject_file.

Change the inject_file method of the compute rpc API to take
a full instance over rpc instead of just the instance UUID.
This cuts down on database access needed by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: Ife38a87cb8a597b40b2b87d9a6a8c7e81d4439c4