Remove deprecated config option names: Juno Edition

Just like the beginning of every other release, remove the deprecated
config option aliases that were marked as deprecated in Icehouse.

Equivalent Icehouse patch: I64548e40f6cea42275a6f0f3ebdc0c4cd9324804

DocImpact: Configurations that were deprecated in the Icehouse release are not
recognized in Juno.

Change-Id: I346ee0248c03e60716bd7dc4a5ee4493610867cb
Delete image when backup operation failed on snapshot step

when we snapshot an instance, we will use @delete_image_on_error to
delete any failed snapshot, however, the image will not be removed
by backup code flow, it will be an issue if too many backup failed
at last ,all useful image will be removed and we have only 'error'
image left in host

Change-Id: Ib527ade86aef52a8445b57fa03fed434578c4204
Closes-Bug: #1288574
Don't return from a finally block

The code in the finally block always executes, even if an exception is
raised. If a return is done, that will cause exceptions to be silently
ignored.

Some unit tests have been failing because of API changes to the
nova.compute.manager:ComputeManager._delete_instance method but the
use of finally/return ended up silently ignoring that error and
caused the test to appear as if it was passing. Another unit test
fails because of a missing uuid attribute.

It could also potentially cause other exceptions to be ignored at
runtime (such as SystemExit) which is likely not the intended
behavior.

Change-Id: I083ee7215296e35a0027be5b3ddf8b764f44cc5b
Closes-bug: 1324277
Check if volume is bootable when creating an instance

Cinder provides a bootable flags for volumes that's not being
checked when creating an instance.

If a user select a non-bootable volume, then the VM became unusable
since nothing will be booted at all.

This check is done only in case that a volume is selected as root
device for a VM.  Boot from snapshot will still work (even that the
volume will be marked as non-bootable by cinder, but will boot the
attached snapshot instead)
If the attribute bootable is not present, we keep the old behaviour
and allow the instance creation.

Change-Id: I8e028d40d6a11beeac4f043afccb17eb61f6ce62
Closes-Bug: #1321334
Add tests to avoid inconsistent extension names

On v2.1/v3 API, extension names should be camelcases.
I0dc6c23ffcdcf97fc52d3575d521692805ffd9e3 has fixed inconsistent
names already.
This patch adds tests for blocking these inconsistent name/alias
additions in the future.

Change-Id: I3c9ee3f59fd17394b251fedf8df592e5d6304962
Related-Bug: #1315597
Use no_timer_check with soft-qemu

The Linux kernel timer check not working properly
when the hypervisor's thread preempted by the host CPU scheduler.

The timer check is automatically disabled with other types
of hypervisors including the hardware accelerated kvm,
but timer_check is not disabled when qemu used without hardware acceleration.

This issue is frequently mischaracterized as an SSH connectivity issue and
causes rechecks and occasional boot failures.

This change adds no_timer_check kernel parameter when we are using
uec images with qemu.

Closes-Bug: #1312199
Change-Id: I3cfdfe9048fe219fc12cdac8a399b496f237e55e
Make SecurityGroupAPI use Object instead of instance_get_by_uuid()

This patch makes the SecurityGroupAPI use the SecurityGroup object
for querying the list of security group names instead of pulling
the instance by id, and then following the ['groups'] link.

This is part of a set aimed at deprecating the instance_get_by_uuid()
method on conductor.

Related to blueprint compute-manager-objects-juno

Change-Id: Id69c2019e934cef72c9b06caa503ea74f28720ce
Make metadata password routines use Instance object

This replaces existing uses of raw conductor apis for get_by_uuid()
and instance_update() with objects.

Related to blueprint compute-manager-objects-juno

Change-Id: I63cf0ac6636e17f2bfcd9d6a859d9ed8612a56e1
Deprecate instance_get_by_uuid() from conductor

Aside from a few trivial-to-fix places in the unit tests, the
conductor instance_get_by_uuid() method is no longer used. This
deprecates it and cleans up the few places that were trivially
touching it.

Related to blueprint compute-manager-objects-juno

Change-Id: Iab48856c0432af0b9483e9868c2e235de75fdd51
libvirt: Make nwfilter driver use right filterref

This fixes Bug #1220856 which occurs with Libvirt NWFilterFirewall
Driver.  While creating a VM with multiple NICs including one connects
to DHCP serving network and another to DHCP non-serving network,
NWFilterFirewall Driver will use the same base filter that allows DHCP
for all NICs. This leads a libvirt launch error due to lack of
'dhcp_server' parameter which is needed to define allow-DHCP filters.

This patch makes NWFilterFirewall Driver use right base filter for
each NIC depends on 'dhcp_server' config.

Closes-bug: #1220856
Change-Id: I7f9a7c281f152985478b2ec295f0644ba475fd76
maint: correct docstring parameter description

Change-Id: I15ad8f17d05c1af3fc2e3b90ed4e71451fdd328d
Treat instance objects like objects in set_admin_password flow

The set_admin_password API path uses instance objects but does a direct
database update in nova.compute.api and accesses fields on the object
like a dict.

This patch changes the code to update the database via the
Instance.save() method and accesses fields on the object using dot
notation.

Part of blueprint compute-manager-objects-juno

Change-Id: Iff82b19ba4ea007930d20d26a613687484392861
Remove unnecessary else block in compute manager set_admin_password

The else block is useless since the conditional block before it raises
an exception, so remove the else.

Change-Id: I1cd859a3f20b1ab9ab2502967526d306ebca9961
Don't translate debug level logs in nova.virt

Our translation policy
(https://wiki.openstack.org/wiki/LoggingStandards#Log_Translation) calls
for not translating debug level logs. This is to help prioritize log
translation. Furthermore translation has a performance overhead, even if
the log isn't used (since nova doesn't support lazy translation yet).

Change-Id: I524b48f530d8afd59a067074332e3964426e4d70
Network: add instance to the debug statement

Allocating and deallocating a network from an instance needs
more info to debug especially when more than one instance
has the same name.

The same change is also made regarding exceptions. That is,
the instance UUID will be used instead of the name.

Change-Id: I624fe77c71f6cb7ca453c863b59f0452c8e6b383
Make sure domain exists before referencing it

Before calling domain.destroy() in the exception handler for a failed
create attempt, make sure domain was created prior to when the
exception was thrown.

Change-Id: I3b7c5afce7f3bacce1b444c245b035334962ff7c
Closes-Bug: #1326998
Fix live_migration method's docstring

Update with actual code path.

Change-Id: I5a306773d93affc30fa756a51a34924f60aafa69
Fix infinitely reschedule instance due to miss retry info

The logic of building instance is moved from scheduler to conductor,
But 'retry' info is still populated at scheduler manager, and that
can't be take back from rpc call. This patch moves the retry checking
logic into conductor, and keep the old 'schedule_run_instance'
same as before.

Change-Id: I4efafe815e8623881e6c037eb9d04c0dbb7052a2
Partial-Bug: #1326207
Bump hacking to 0.9.x series

Hacking 0.9.0 had a minor bug so require 0.9.1 or higher.

In order to keep this patch to just a requirements bump, ignore new and
stricter hacking rules that are being triggered. Fixing up the code and
turning these on is out of scope of this patch and is for future patches.

Change-Id: Iafbd4adae8c6b446d53b62dfc490eab8e76a43ac
Fix H401,H402 violations and re-enable gating

H401 and H402 got stricter in hacking 0.9, so fix new violations and
re-enable gating.

Change-Id: I4785d14edee1ffdf32e2900f6e6234cbecab6d8a