Allow an in-progress stack to be deleted

Since multi-engine was merged, it is no longer possible to delete a
stack which is create/update IN_PROGRESS.  This re-introduces that
ability.

If the current engine has an active stack lock, stop any active
threads, remove the lock, and delete the stack.  If another engine has
the active stack lock, send an RPC command to the remote engine to stop
any active threads and remove the lock, and then delete the stack
locally.  If no engines have the an active stack lock, acquire the lock
and delete the stack.

Closes-Bug: #1262012
Change-Id: I188e43ad88b98da7d1a08269189aaefa57c36df2
Adding option in config to specify region name

This patch allows to specify region name which will be used to
get appropriate API endpoints for services from Keystone.

Change-Id: Iaca5987da447fdb77cd8f2253e6543bb7df022c4
Closes-Bug: #1213291
Closes-Bug: #1147530
Add parser.Stack support for stack_domain_projects

Add a DB column to store the project created to contain instance-users
associated with resources in the stack.  To avoid the overhead of creating
a project for all stacks (and associated test impact), we introduce a
setter which can be used by InstanceUser resources to set the project
ID, such that it's cached at the stack level (no need to look up the ID
in keystone every time) and so the stack can clean up the project when it
is deleted.

Change-Id: Iea3624afbc4d746f46cd58d50e7b238bc847fa49
blueprint: instance-users
heat_keystoneclient raise error if stack user role missing

Modify error path when the required role is not found, so we raise
an error and do not create the user if the required role is not
found.

Change-Id: Idbc8cc5821af8aca1442051a0a6c37e03b2522b9
Closes-Bug: #1277478
heat_keystoneclient add create_stack_domain_user function

Add function which creates users in the heat domain user domain,
in the project specified (which is expected to be in the correct
domain, ie created via create_stack_domain_project)

This is similar to create_stack_user, which is expected to be removed
when all resources have been migrated to domain users.

Change-Id: Ie0a6ce039058a574ff0ddc3ed69e0e9cc9ad4db4
blueprint: instance-users
heat_keystoneclient add delete_stack_domain_user function

Add function which deletes a user in the heat domain user domain,
in the project specified.  Since we're deleting via the admin client
add some sanity checks to ensure we're deleting a user in the
correct domain/project.

Change-Id: I6a29164147db0d660e6a0cab9b27ea0fc55d99ba
blueprint: instance-users
heat_keystoneclient add create_stack_domain_user_keypair

Add function which creates an ec2 keypair associated with a stack
domain user

Change-Id: I0d6cde48a7569fcebb6fc8dcac075281c99a69db
blueprint: instance-users
Merge "Add parser.Stack support for stack_domain_projects"
Merge "heat_keystoneclient raise error if stack user role missing"
Merge "heat_keystoneclient add create_stack_domain_user function"
Merge "heat_keystoneclient add delete_stack_domain_user function"
Merge "heat_keystoneclient add create_stack_domain_user_keypair"
Merge "Adding option in config to specify region name"
Merge "Allow an in-progress stack to be deleted"