Add DB API to get the count of stacks per tenant

This method will be used to limit the number of stacks any one tenant
can create.

Change-Id: Ic990bf84fc1aa5592504f7c423fbce953615a4a1
Only send traceback to users when in debug mode

API services currently send the traceback to clients. While the client
hides it from user view, it is still present in the response, exposing
the service to details of the engine that administrators likely would
not like to have exposed.

Fixes bug #1210623

Change-Id: I554ba24b7ac9166e28a8a0a10f566ed9cfa03014
Pass debug mode to eventlet.wsgi.server

Previously if any exceptions accidentally made their way to
eventlet.wsgi.server's response handler it would print their traceback.
We only want to show users tracebacks in debug mode. In production we
want them suppressed.

Fixes bug #1222008
Change-Id: Ieb11f75ebffc67bd584432cfd8eeaac010fce7ca
Add security_groups for create_port()

Currently if defined SecurityGroups and SubnetId properties for
instance in heat template, the SecurityGroups were not associated
to the port created within the previous SubnetId, in another word,
the instance are not allocated to the specified security groups
defined in heat template.

    * Modifies function _build_nics() in instance.py, adding an item
'security_groups' in the post body of create_port sending by neutronclient.
    * Adds a new function _get_security_groups_id() to map security_groups
names to ids.
    * Adds corresponding unit tests.

Fixes bug #1221564

Change-Id: Ica2df7c6f96bc982a5bd5ece3611949ae905e5c8
Document volume properties

This adds documentation to the volume and volument attachment
properties.

Closes-Bug: #1224158
Change-Id: I22b4c8cb301b5de63418fd029ddf7f31087dfb8b
Migrate remaining TEXT columns to LONGTEXT

To avoid cases where mysql silently truncates json data
when it is > 2^16 bytes, migrate all remaining TEXT columns
to LONGTEXT, in a similar way to the fix for bug #1210799

Combined with the fix for bug #1215501 which limits the request
body size, we should never truncate, even if mysql is configured
such that it can happen

Fixes bug #1223029

Change-Id: Ib536cfa8e2952a5e047cd8573288cdd9fee0622c
Add error handling to property value resolution

Fixes bug 1224746

Change-Id: I990de0159e0fb49e52afdaab546f8d74372422bf
Add methods to help calculate a stack's resources

In order to limit a stack's size in future changes, we need to know
how many resources are already in the stack. We also need to be able
to find the root stack object of a nested stack.

Change-Id: Ib848bcd2e10d02dffc30dce45a2675a9f718fa7d
Related-Bug: #1215100
Use strings for block device mapping info

Nova client receives colon separated strings for block device mapping info
instead of a list.

Fixes bug #1221693

Change-Id: I321001d406f620d5f8a21e0f28cf706579ad64ad
Validate OS::Nova::Server block_device_mapping property

Make sure either volume_id or snapshot_id exists but not both. Also this patch
ensures that a bootable volume is specified when image is not given.

Fixes bug #1215267

Change-Id: Ia51f6c7aec9c0b257318992ee58febc392ea3d84
Merge "Migrate remaining TEXT columns to LONGTEXT"
Use the generic RequestLimitExceeded exception when possible

Rather than having lots of specific exceptions that all pertain to request
limitation, we can just use the RequestLimitExceeded exception when applicable,
which can also simplify the handling of exception mapping in fault.py.

Change-Id: I61b1e59912087fad286e74c22af15ffe6382bb65
Merge "Add error handling to property value resolution"
Merge "Document volume properties"
Merge "Use the generic RequestLimitExceeded exception when possible"
Consistent logging in the API to better log exceptions

With this patch we log the actual message of an exception instead of its
str() representation. This allows for consistent error logging in the
API.

Fixes bug: #1224646

Change-Id: I3965bffb1c2c2eee0af440d1ecd30ccb3bb958d5
Merge "Add security_groups for create_port()"
Docs for building heat-cfntools images with diskimage-builder

Change-Id: I5ec805f8800a48b798700532551f0414fc6f6be0
Merge "Add DB API to get the count of stacks per tenant"
Merge "Add methods to help calculate a stack's resources"