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
Remove localhost references from tests

Using localhost in dummy URLs is a bad idea, because if you get
your mocking slightly wrong, some tests try to connect to the
services running in your local test environment.

Change-Id: I5550c397230f94740c63e6cab30ac35b3ae85297
autoscaling test fix assertRaises Exception warning

Fix "H202 assertRaises Exception too broad" warning

Change-Id: I162dbd8e421b22cbf3a55b7052107c8332b8d59a
Do updates based on a single dependency list

This ensures that updates proceed in the correct order with maximum
parallelism, for arbitrarily complex dependency graphs.

Change-Id: Ia11f4cfef58a3045199e1e5e49050cb1646f5057
Don't stub LoadBalancer.update in autoscaling tests

Stub handle_update() instead. We can still verify that the arguments are as
expected, while still exercising as much of the logic as possible.

Change-Id: Iebb861bb5af27d92e65083c8bac6821f91382dd5
Allow resources to be updated in parallel

Turn Resource.update() into a coroutine.

Change-Id: I625a2d81095cc28161f8e2342121bfe1939611e3
Parallelise Instance updates

Change-Id: I358f7fbdb3232f4bf528d170476935ef2b4239cc
Rackspace: Parallelise CloudServer updates

Change-Id: I7c5f42500a3c207f0f2e9149dba092519f65a2a2
Parallelise Server updates

Change-Id: I6a2e5841a3a65edb99f227d5849800eb696c9faa
Make security groups associated with Neutron port work

The security group names are now translated to UUIDs which is required
when using the python API. The lookup has been improved to find
existing security groups not part of the stack as well.

Fixes bug #1179481

Change-Id: I4f86bade87f89b867d12822c5f80aa5b075b7fbb
Sync rpc from oslo-incubator

This includes the following changes:

76972e2 Support a new qpid topology
284b13a Raise timeout in fake RPC if no consumers found
9721129 exception: remove
7b0cb37 Don't eat callback exceptions
69abf38 requeue instead of reject

Change-Id: I9113991aebe7d566c8877d74aad9d55b65fdfb9e
Closes-bug: #1178375
Support ISO8601 duration format for UpdatePolicy PauseTime

Adds a timeutils module in heat common to handle ISO 8601
duration format. Separating this as a different patch per
request.

Change-Id: I2fe6fccde838f4ddac6b898e4518ffb33e2a76fc
Implements: blueprint as-update-policy
Remove references to the multiple config files

Only refer to heat.conf in the docs and scripts.
For install.sh copy the iniset() function from devstack
to assist in setting some semi-sane defaults.

Change-Id: I933891e35103c003f1272bc89c7b42d2ad76697b
Delete the old example config files

heat.conf.sample is the master sample now.

Change-Id: I732bc8a363c3829a68fddfb4c03cf4bca52d8842
Merge "Support ISO8601 duration format for UpdatePolicy PauseTime"
Merge "Make security groups associated with Neutron port work"
Merge "Do updates based on a single dependency list"
Merge "Don't stub LoadBalancer.update in autoscaling tests"
Merge "Allow resources to be updated in parallel"
Merge "Parallelise Instance updates"