EC2token middleware implement multi-cloud auth

Making ec2token middleware multi-cloud aware presents a
challenge as the API assumes there is only one cloud and
Heat must remain compatible. This means that unlike multi-cloud
heat-api, the request cannot explicitly say which endpoint it
wants to authenticate against.

However it must be possible to make authenticated cfn requests
against a multi-cloud heat for the sake of cfntools requests.

The approach taken in this commit is to attempt authentication
against each configured allowed_auth_uris until one succeeds.

This is safe for the following reasons:
1. AWSAccessKeyId is a randomly generated sequence
2. No secret is transferred to validate a request

If all auth attempts fail, the last failed reason is raised
as the error to the user.

Change-Id: I3a5a7adc97b110fcb8c6e8b156749fdec8924b88
Add the missing heat.po files into heat

There is only one file "heat.pot" in heat/locale/.
We need to add the missing heat.po files.
I updated "heat.pot" file and added the supported languages
(Take glance po files as reference).
The added files are used for
setting up the structure of directory.
The po file doesn't have any translated strings.

Fixes bug #1217172

Change-Id: I1e017c332c80eb01b04e042b5da0129198169bd5
Add schema for security group rule

This applies to the SecurityGroupEgress and SecurityGroupIngress
properties of the AWS::EC2::SecurityGroup resources.

Change-Id: I339227190db42707560f00cc825bc791d2bde5ce
Fixes: bug #1214333
Change localhost references in test_nested_stack

These references are using localhost which may be running a server and
provide valid responses, contaminating the test. Using RFC2606's
recommended test TLD of '.test' ensures that these will never resolve.

Change-Id: Ie555a321c2af23fbcf4aca9207acb6a0e40bb703
Implement interruption-free update and rollback

During an update, where a resource must be replaced in its entirety, create
the replacement resource before deleting the old resource.

Also, allow rollback to the previous version of the resource without
replacing it, where that is possible.

Fixes bug #1176142

Change-Id: Id89654bad297815bdbcc86f666367772889b5df4
Add auto code api doc generation

This will document the python api to:
heat.api
heat.engine (not the resources as we have docs for those)
heat.rpc

(copied from ceilometer)

Change-Id: I5a400f72d4ec115fb700ab8b24dbccf0b5cd3200
Cleanup the Properties doc strings

This is just fixing the errors/warning from "make html"
The examples needed to be escaped with code blocks "::".

Change-Id: Ic55d3af38aea70f83dabb7e2a8e8b9069a930fd7
Provide user control for maximum nesting depth

In the case of an infinitely recursing stack, Heat will continue to
keep nesting stacks until python's maximum stack recursion depth
is reached. By this point a lot of memory and time may have been
spent parsing/loading/etc.

The default of 3 is enough to deploy a stack of stacks of stacks. It
can be raised by deployers if there is a desire to do larger and more
complicated stacks, at the cost of more resource utilization.

Fixes bug #1214239

Change-Id: Ic492ef84b94b1f715c49eef7e1794a486fb8182f
Remove aws_creds from DB API

aws_creds has been removed from the DB and the model, needs
removing from the API too

bug #1215850

Change-Id: I008acc13576c857d9e6238f186424e43dcdd7850
Fix CFN API error responses

A remote exception (included in conf.allowed_rpc_exception_modules)
is now restored to a subclass of its original type (with the
exception of non heap types which will always be restored to its
original type). Catching rpc_common.RemoteError is not enough
anymore.

Fixes bug #1214831

Change-Id: Iae3ce0c9d0d3f6565fab25ec899f83f19d46e81b
Give Property constraints a string representation

This will enable constraints to describe themselves when we generate
documentation.

Change-Id: Iba410f11c79d1e5d677a5d8aba90052d1c88528a
Generate docs using new properties Schema class

Change-Id: Ic7849a7aaeeb88379695557f7992330f83638c48
Merge "Change localhost references in test_nested_stack"
Merge "Provide user control for maximum nesting depth"
Merge "Remove aws_creds from DB API"
Implement native nova server resource

Some notes on the implementation:
- extends Resource rather than Instance since most of the
  complexity of Instance is in the handling of the Volumes
  attribute
- exposed properties and attributes map as closely as possible
  to the underlying v1 nova API (rather than the nova client library)
- property or attribute key namespaces have been stripped to provide
  a cleaner API and avoid YAML quoting.
  (eg instance_name -> 'OS-EXT-SRV-ATTR:instance_name')
- an assumption is currently made that any volumes specified
  in block_device_mapping should not be detached on suspend
- Network address properties attempt to cater for simple and
  advanced use-cases:
  - 'first_private_address' and 'first_public_address' for simple
    template attribute scenarios, and to aid with AWS::EC2::Instance
    transition
  - 'networks' for a simple data structure which provides all addresses
  - 'addresses' for the raw data structure returned by the API

Implements blueprint native-nova-instance
Change-Id: I4136da22961c8aa90e3fc8a9411457622f1909fb
Merge "Give Property constraints a string representation"
Merge "Add the missing heat.po files into heat"
Merge "Implement native nova server resource"
Merge "Generate docs using new properties Schema class"