Return Customer's Quota Usage through Admin API

DocImpact: This patch adds an extension 'UsedLimitsForAdmin'. If this
extention is enabled then it extends the used limits API behavior, such
that admin can fetch the details of any customer's quota usage by passing
the customer's tenant id in query parameters.The API signature for the
same is 'v2/{tenant_id}/limits?tenant_id={customer_tenant_id}'

Change-Id: I89b8b5083e46b899458407426c89a3865e960faa
Implements: blueprint customer-quota-through-admin-api
Don't update DB records for unchanged stats.

Change-Id: I6eb0adba12676cf057c92fb0b54431cfe6a76210
Fix error in instance_get_all_by_filters() use of soft_deleted filter

Change-Id: I7c2fab48944e34765b3fff8ce10bc64a5cd826c8 introduced the
'soft_deleted' filter to the above method to tweek the behavior of the
existing 'deleted' filter. In doing so, an error was introduced that
changed the original behavior of the 'deleted' filter when used by
itself, in how it treated both soft- and hard-deleted instances the
same.

The original merged patch did not include test coverage for the changes
made to the db api. This change fix the error so that the original
behavior of the 'deleted' filter is restored while also adding full
test coverage for the modifications to the db api that has already
merged.

Finally, the support method create_instances_with_args() used by the
new tests was renamed create_instance_with_args() to reflect that
when called, it just creates a single instance.

Resolves bug 1181865.

Change-Id: Ibb82af09d3876904455ca7c93e14e9722ed31d35
Add missing tests for nova.db.api.agent_build_* methods

blueprint db-api-tests

Change-Id: If8f8a3f02bc0ea73b9174caad60107c7d87f62c0
Raise AgentBuildNotFound on updating/destroying deleted object

Methods below should raise an exception when attempting to operate
with deleted AgentBuild objects:

 nova.db.sqlalchemy.api.agent_build_destroy()
 nova.db.sqlalchemy.api.agent_build_update()

Fixes: bug 1181967

Change-Id: If6df202afb7ea41634c35f7a52988e19677f4d65
Using unicode() to handle image's properties

Replace str() to unicode() to allow nova-api work well with the fix I
did in glanceclient (https://review.openstack.org/#/c/29245/6).

Fixes: Bug #1180377

Change-Id: I31e532bb50e12e355b9dd26c9ce1e129da858cbe
Signed-off-by: Zhi Yan Liu <lzy.dev@gmail.com>
translates empty remote_ip_prefix to valid cidr for nova

Quantum allows empty remote_ip_prefix to mean "any host"
but Nova uses a CIDR as part of each rule.

Fixes bug 1180828

Change-Id: I4983515ccd0cc621491d63e59d6ab6ac4dd74b6a
Remove tempest hack for create/rebuild checks

A bug in Tempest required us to check quotas before requesting image
information. Now that this has been fixed upstream, we can remove our hack to
get around this.

Change-Id: I7ef1cd2f4f641fb5616945b66740820a4003b66d
IPMI driver sets bootdev option persistently.

This patch changes baremetal ipmi driver's behavior with regards to
setting the chassis boot device.

Previous behavior: set bootdev = pxe for next boot only.
New behavior: set bootdev = pxe persistently.

Fixes bug 1178092

Change-Id: I735965422a950fbd249414b5eecd0a1b21dbabea
add xml api sample tests to os-tenant-network

Change-Id: Ib79defe49c82a175cb8605aa3a65ccd2c48d68f7
Moved sample network creation out of unittest base class constructor.

This sample networks only needed in:

 nova.tests.api.ec2.test_cloud
 nova.tests.integrated.test_api_samples
 nova.tests.network.test_manager
 nova.tests.test_libvirt
 nova.tests.test_xenapi

Moreover, base class constructor is not good place for sample
data creation. Database should be empty before runing tests.

Fixes: bug 1181502

Change-Id: I8dcaa5b36a1da0c0928c9445c556d788d463844e
Add node as instance attribute for notification

Fix bug 1181900

In havana release, node is not set as instance attribute and node
indicates the hypervisor where the instance reside in, we should
set node as instance attribute for notification.

Change-Id: I872fba626ef3e321d88cf60fc730df6cf4612c86
Deprecate compute_api_class option in the config

Add a function "get_compute_api_class_name" within nova.compute
that returns nova.compute.cells_api.ComputeCellsAPI if cell is
enabled and this cell is an API cell, and returns compute.api.API
otherwise.
Add an option "cell_type" to the config in group "cells".
Use the default value of "cell_type" (None) for legacy configuration.

Change-Id: I32f5ccf789c657b563c165bfa8244e819b1a79a6
Fixes: bug #1049249
Add missing conversion specifier to ServiceGroupUnavailable

The message in the ServiceGroupUnavailable exception was missing the 's'
conversion specifier.

Fix bug 1183733

Change-Id: I54869431511a72c49ccf61f5e7b1a30607959423
Fix config drive code logical error.

Image id has changed to uuid, so bool value can't be a image ID
any more, remove unnecessary test code.

fix bug #1181991

Change-Id: I420e4cdb848401375b347d43e06343efaa7bf5fc
API Extensions framework for v3 API Part 2

This is the second patch for the new extension framework
which is only to be used by the Nova v3 API.

- Adds tracking of extensions loaded and allows
  extensions access to this information
- Adds core API functionality as extensions
  - 'server'
    - Adds an entry point that other extensions can
      use to modify the server create arguments without
      having to modify the server extension itself
    - TODO: Will have to add more entry points as other
      extensions are ported. Delaying adding entry points
      now so they can be tested as they are added.
- Adds port of os-keypairs extension
  - This is an example of a controller extension in the new
    framework
  - This is an example of using the server extension entry
    point to add functionality without modify the core API code
  - Ports tests for the os-keypairs extensions
    - Adds v3 API fake specific code for tests

This completes the bulk of the new extension framework. Porting
of the server tests will be done in future changesets as more
of the core API is ported across as the tests are dependent
on multiple core APIs.

Partially implements blueprint v3-api-extension-framework

Change-Id: Ibadb5bbe808c27d2f4afebe65c06a92576397085
No relevant message when stop a stopped VM

When user tries to stop a stopped VM, there is no need to stop it again,
and We need return it's vm_state.

Fixes bug 1181934

Change-Id: I71772dfcead440cb49b6ccdbb4e1a891475bb75e
Removing misleading error message

This function (_get_instances_on_driver) was reporting instances are on the
hypervisor and not in the database with no consideration for the filters being
used in the database query. This resulted in error log messages indicating running
instances were not in the database when in fact the query was filtering for deleted
instances.

To avoid misleading error logs of this nature I've removed the logging from the
function. Currently the locations which call this function provide more accurate
logging on the state of the instances that are returned based on the filters they
have called _get_instances_on_driver with.

bug 1183276

Change-Id: I4ee52fe417f73a90cf157bc531b483be93e34275
Fix internationalization for some LOG messages

Fixes a couple of LOG messages to support internationalisation

Change-Id: Ifba6beb6a33e3969522776114a69def9eaa5262b
Rename policy auth for V3 os-fixed-ips

Renames name used to for policy authorisation for the
V3 os-fixed-ips to os-fixed-ips with a "v3:" prefix (as
per ML discussion)

Change-Id: Ia599c29d7f45153ef47605b6e2a7061fc28ff7cc