delete deleted image 500 bug

Fixes bug 1138666

When you delete an image that you just deleted, you get a 500 Internal Server Error.
In this case, the problem isn't an internal server error but the "unauthorized" response
from the image service is not expected.

This can be recreated with devstack:
 1) delete an image
 2) delete the same image

Here's an example:

$ nova image-list
+--------------------------------------+---------------------------------+--------+--------+
| ID                                   | Name                            | Status | Server |
+--------------------------------------+---------------------------------+--------+--------+
| caa6c969-0f32-466b-8e8e-a7e0ac835470 | cirros-0.3.1-x86_64-uec         | ACTIVE |        |
| 8af603da-b69f-49c6-8e52-25632eccb31c | cirros-0.3.1-x86_64-uec-kernel  | ACTIVE |        |
| fe67d4e1-baca-4968-8638-2314373b620b | cirros-0.3.1-x86_64-uec-ramdisk | ACTIVE |        |
+--------------------------------------+---------------------------------+--------+--------+

$ nova image-delete caa6c969-0f32-466b-8e8e-a7e0ac835470

$ nova image-delete caa6c969-0f32-466b-8e8e-a7e0ac835470
ERROR: The server has either erred or is incapable of performing the requested operation. (HTTP 500) (Request-ID: req-1254f8a5-8dda-444a-a077-2072ab3baa6a)

If you delete a deleted image, the server should respond with '403 Forbidden'
because the image still exists and no user is allowed to delete a deleted image.

The fix is to catch the exception from the image service and
convert it to a wsgi exception for '403 Forbidden'.

Change-Id: I2f14687d5468b67389f5dd6ab338ceb54e8a29bb
clear up method parameters for _modify_rules

'table_name' is always used anyway, so there's no reason to have it as
optional especially as it's not perfectly clear that it's only needed
when current_lines is empty

'binary' was never used

Change-Id: I2c6bcf3fcff1c097d1f5c5ae34aa3428a94dabdc
Libvirt driver create images even without meta

This patch allows the libvirt driver to call _create_image and
create instance directory and other needed images even when there is no
image metadata specified.

As an added bonus, this patch refactors the code of _create_image
method a bit to make it more clear to the reader when some of the images
will and will not be created, especially with regard to booting from
volume.

Fixes bug: 1124441
Fixes bug: 1131913
Fixes bug: 1123274

blueprint: improve-boot-from-volume

Change-Id: I5a028dc0585876d35be4fb86df3a423d89e054ee
Extended server attributes can show wrong hypervisor_hostname

When using the extended server status (EXT-SRV-STS) extension, it might
produce the wrong hypervisor_hostname on multi-node drivers like baremetal.

The db query used is incorrect and in fact not needed anymore, since the info
is already available in the instance dict itself.

This patch resolves the issue by instead using instance['node'] directly
and further removes the no longer used compute_node_get_by_host query.

Resolves bug 1135506.

Change-Id: I641c4f59a088754fe68378ae4bf217c59056b1d1
Add ability to control max utilization of a cell

Add a 'reserve_percent' config flag to cells to control the
maximum free capacity that a child cell will be advertised to its
parent(s).

This gives the ability to leave some reserve capacity
in child cells for operational maintenance.

Change-Id: I1dae1eae4f61ca8079c6f24e60176c31fd8a759d
Fixes volume attach on Hyper-V with IPv6

Fixes bug: 1148536

This patch splits the target_portal address:port pair properly in case of IPv6
addresses during login on the storage target.

Change-Id: I87c1153dd0289ac73fb35c2cd57a27d128042b2c
Simple syntax fix up.

Change-Id: I3a77ed050b37432f29cc2e51822af71d08c999ad
Check if flavor id is an empty string

Now once a flavor is created with empty string id, its id and
name cannot be specified when we use or delete the flavor.

This checks if flavorid is empty when creating a new flavor.
And if so, assigns auto-generated flavorid.

Fixes bug: 1148563

Change-Id: Ib48c4cc4ebd993d1f3f3d60a7bb856eff3c279d5
Server create will only process "networks" if os-networks is loaded.

When working with a quantum configuration and multiple networks you
have to be able to pass in the requested network to avoid instances
being attached to all networks, so this part of the request isn't
really optional in practice

However the os-network extension is not fully compatible with
quantum, and the operations do map very well. For example:

- Network creation has a set of options that are pretty nova-nets
  centric (such as VLAN)

- Network creation is limited to admins

- Network association and dis-association from projects is not
  the quantum model

- cidr from quantum is not shown correctly in the output of nova
  network-list and network-show

Rather than needing the os-networks extension to loaded and
thereby exposing a bunch of calls that don't really map to
quantum, it would be better to also allow processing of "networks"
when the network api is configured to be quantum

Fixes bug #1150250

Change-Id: I0cc1faf6417d7a004dd9f0ff772860237fc94c57
Refactor db tests to ensure that notdb driver is used.

Resolves bug 1076023 by refactoring to ensure that the notdb driver
is used for these tests.

Change-Id: I94674d20c8fa320a5855bfa94eb694703fa23326
Remove instance['instance_type'] relationship from db api

This removes the entire relationship between an instance and the flavor
it was created from. As such, it removes two tests entirely which
examined the old behavior.

This is one change in a series aimed at removing the use of instance-linked
instance_type objects, in favor of the decoupled type data in
system_metadata. See bug 1140119 for more details.

Change-Id: I8b525a900bf2dc6b193e54aae35fc32248e4cff4
Fixes instance action exception in "evacuate" API.

'Evacuate' instance action was not created (incl. in the DB) which
caused exception to be raised during action_event_start.

Change-Id: Iec5f0a91f9b08fbdcf3ace1eaa0efbc4d9d8fc04
Fixes: bug 1152512
Add numerous fixes to test_api_samples

- Throw IOError when a template for POST/PUT operations
  does not exist instead of returning an API response error
- Create template and sample on first run when those
  don't exist. It takes two runs of this module now
  to get those files first populated.
- Fix error labels to now specify whether we are referring to
  a sample or response when comparing response results
- Call _pretty_data() only once on sample_data before this
  param is passed to _compare_results(). This change cut the
  total execution time by .5 seconds or 1%. :)
- Create response template files which content is the same as
  its response body instead of currently 0-length body.
Fixes bug 1140384

Change-Id: Ic62ae343409b2084e6a238025a86f0b7909a1b76
Revert changing to FQDN for hostnames.

5dd1553cca7f7e62eebce75e1d936fc211b239ec moved to using a FQDN for
host names. This caused bug 1151012, but Russell and I also believe
the change will break the host column on the instances table. I can't
do a plain old git revert for this change because a lot of the code
has moved after this change.

Revert to using just the hostname (no domain), and we'll revisit the
intent of 5dd1553cca7f7e62eebce75e1d936fc211b239ec separately.

Resolves bug 1151012.

Change-Id: I944f46d6eb2a6944a12833ec8de7afa2b18e66e7
Pass migration_ref when when auto-confirming

The _poll_unconfirmed_resizes() task in compute/manager calls back to
compute_api to confirm resizes. This triggers a db lookup for the
migration, which is not allowed by no-db-compute. Since we already have
the migration, pass it through to avoid the lookup.

Since this doesn't change rpcapi (and thus, RPC clients should not
know about this optional paramter), we don't need to bump the RPC
version here.

Fixes bug 1152792

Change-Id: I4bd3b0c88968ed7f64e7df0afa12e83009ee8ccf
Merge "Simple syntax fix up."
Merge "Server create will only process "networks" if os-networks is loaded."
Merge "delete deleted image 500 bug"
Merge "Add ability to control max utilization of a cell"
Merge "Refactor db tests to ensure that notdb driver is used."