Add CRUD methods for tags to the EC2 API.

This is an incomplete implementation of the EC2 tags API.  In EC2, most
resources are able to be tagged.  See
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html

In openstack, the only currently 'taggable' resource is an instance, as
it has an instance_metadata table associated.  So far, only instance
tagging has been implemented, but it is relatively simple to extend this
to other resource types by creating the associated model and api calls.

Additionally, in EC2 searches, shell-style globs are allowed, eg:
fo* will match fo, foo, foobar
fo? will match foo

This has been left to do at a later date.

DocImpact: Adds new API calls: CreateTags, DeleteTags, DescribeTags
See:
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateTags.html
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteTags.html
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeTags.html

Fixes: bug #1096821
Implements: blueprint ec2-tags-api

Change-Id: Idf1108f6a3476cabdbdb32ff41c00aa4bc2d9ffe
Signed-off-by: Stephen Gran <stephen.gran@guardian.co.uk>
Update latest oslo.setup.

Change-Id: If3d397a1a33e14912abb1f7c94790640fe255d3a
Limit the checks for block device becoming available.

Instead of previously looping potentially forever for a block
device mapping to become created from the volume api, basically
blocking a greenthread until this happens we now will have a number
of attempts (defaulting to 10) that we will wait for the volume api
to create said block device mapping (or error out).

Fixes bug 1162064

Change-Id: I6ff0b42aad48df735d09f91a0a9fe98e6abcf2eb
Guard against content being None

`content` can be passed in as None, so we need to set it to the empty
list if that occurs.

This also fixes the bad-practice of using a mutable data-type as a
default argument.

Fixes bug 1163598

Change-Id: Ie991c9452a21cfb036d3955a094ec345805d63d1
libvirt: Get driver type from base image type.

If we are using the raw backend (no cow), we should set the driver
type based on the type of the source image instead of always
using raw.

Calls to to_xml were moved after _create_image so that the image
type could be determined when creating the xml for libvirt.

Fixes bug 1163009

Change-Id: Ic8d5f0ab83d868a42f834d39c0afb64818d7e027
Explain why the give methods are whitelisted.

In order to aid mine (and likely others) understanding of this
code it seems to make sense to document what these special whitelisted
attributes are.

Change-Id: I1c11484fc74e898df5d25ab94ed0cdb288accd67
Grab instance for migration before updating usage

Updates _update_usage_from_migrations so that it grabs the instance
associated with a migration before updating usage.

Bug 1163622

Change-Id: I64acef912ae71ea5c7fb66e9fcaafe5750c63eaf
Merge "Limit the checks for block device becoming available."
Merge "Update latest oslo.setup."
Merge "Explain why the give methods are whitelisted."
After migrate, catch and remove deleted instances

On the host init, starting with a deleted instance which has been
previously evacuated from the host results in an InstanceNotFound
exception. Catch and log this, and then call driver.destroy() so
that the hypervisor driver can clean up the deleted instance.

If we don't do this during host init, it will cause problems during
periodic tasks.

Fixes bug 1155152

Co-authored-by: Devananda van der Veen <devananda.vdv@gmail.com>

Change-Id: I979a698b8e739b9335f37b81e789285f91977a8e
Fix a typo in attach_interface error path

This prevents an attach failure from raising the proper exception to
the caller.

Change-Id: I51559cf395fc99738127b7a443437197d15f3d4c
Merge "Grab instance for migration before updating usage"
Merge "Fix a typo in attach_interface error path"
Modify _verify_response to validate response codes.

The method will now take a response code as an additional
parameter and will validate it against the actual one.
Fixes bug 1156684

Change-Id: Idba3f54ed50b359d9230707fb45e7c5ea68e6b7d
Fix SecurityGroups XML sample tests

Fixes bug 1157521

Change-Id: I38ad52e0720feea37e8dbda8ad9c29162842c8f1
Fix legacy_net_info guard

The existing code assumes that `legacy_net_info` is always in legacy
mode, meaning a list of tuples which causes it to break when passed a
new-style NetworkInfo object.

Fixes bug 1164152

Change-Id: I2131d9b24045cd7531454b65d97776b11ec3ab02
Simplify and correct the bm partition sizes.

The sfdisk code that landed uses -D, which ends up subtracting space
from the first partition - this plays havoc with precisely sized disk
images due to a bug in the automatic adjustment code. Instead we
directly specify the spare space to be allowed.

Additionally, sfdisk can be used much more simply, avoiding any room
for us to make arithmetic errors, and reducing the opportunity for
race conditions with udev so this change does that.

Change-Id: I7f95e867d8775f49698cbbf4b1be40e69db9d538
Resolve conflicting mac address in resize

This patch fixes bug 1161226 and mac address conflicts when migrating or
resizing an instance using the PowerVM driver. This will ensure that if
a migration or resize is taking place on the same host, a temporary mac
address will be assigned to the original LPAR so there is no conflict on
the VIOS when a second LPAR is started with the same address.

Change-Id: I59db484defb789f3a7c0eddbd5ef9e92efc22419
Imported Translations from Transifex

Change-Id: I2abbf4025e7467a090efba9d1f7820a1fcac29d1