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>
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
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
Move console scripts to entrypoints.

As part of the move of plugins to entrypoints, take advantage of the
entrypoints based console scripts, which will make our command line scripts
available for unittesting.

Part of blueprint entrypoints-plugins

Co-authored-by: Michael Still <mikal@stillhq.com>

Change-Id: I5f17348b7b3cc896c92263dd518abb128757d81f
Optimize resource tracker queries for instances

instance_get_all_by_host_and_node() had 4 different joins being done.
The resource tracker is the only consumer of this method and does not
need the joins.  This optimization will save many unnecessary rows from
being fetched during the update_available_resource() audit task.

Change-Id: I414c219e4563634e270007fe3d0fa980b273e795
Merge "Optimize resource tracker queries for instances"
Merge "Move console scripts to entrypoints."
Merge "Add CRUD methods for tags to the EC2 API."
Merge "Modify _verify_response to validate response codes."
Merge "Fix SecurityGroups XML sample tests"
Merge "Resolve conflicting mac address in resize"
Remove race condition (in InstanceTypeProjects)

Soft delete all duplicate rows with the same (project_id, instance_type_id)
except one with the biggest value in `id` column.

Create UC on columns (project_id, instance_type_id, deleted)

Add tests for migration

Fix instance_type_access_add method
	Replace Select then Insert -> Try to Insert.

blueprint db-enforce-unique-keys

Change-Id: Id70509337e78f3bf778501f2c77aa03263580ef0
Add missing tests for instance_type_extra_specs_* methods

There was no tests in test_db_api for instance_type_extra_specs_*
methods.

Add tests to ensure that all works.

blueprint db-api-tests

Change-Id: Ie88aa776574c5ddf37a1adcf7cc2c9e70c6eb810
Cannot boot vm if quantum plugin does not support L3 api

Fixes bug 1163670

Change-Id: I87f0b73e5040b5f9cf7d8c30aa16a2a33faca14f
Add SecurityGroups API sample tests

Add sample tests for adding and removing security groups
Fixes bug 1157222

Change-Id: Ib8450fcd6334b720a2199d52e07ae00f78aa6df0
Only call getLogger after configuring logging.

Logging needs to be setup properly before we try to log
something. Fix a test case that loads the code but does
not execute the code that results in the LOG being setup
properly.

Fixes LP# 1161031

Change-Id: I9d5bc6b87cfb25243f00e17b532d4485dc4454e4
Correct network uuid field for os-network extension 

"nova net-list" does not return network uuid even when the uuid is
available, and instead returns only the id. This is because the
"network_dict" function in the extension improperly uses "in" to check
for a Network model object. This also reduces compatibility in the API.

Fixes bug: 1162409

Change-Id: I30d4c8bfa37d89123f35ee8cc7c67f0e819262a7
Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
Merge "Only call getLogger after configuring logging."
Allow describe_instances to use tags for searches

In the EC2 API, the DescribeInstances API call allows for a 'filter'
argument to be passed, consisting of key/value filter pairs.  If the
filter contains tag:<something> or tag-<something>, the search is done
on resource tags.

See
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html
for details of the API and

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html for
usage.

Change-Id: If2622c4dacbdd3a53fd6d49242225692da8b741a
Signed-off-by: Stephen Gran <stephen.gran@guardian.co.uk>