Vijendar Komalla [Thu, 29 Aug 2013 13:59:46 +0000 (08:59 -0500)]
Implement parallel delete
This is first patch in the series to implement parallel delete
and it includes following changes:
1. changing Stack.delete to use stack_task
2. In Resource.delete polling for check_delete_complete
3. Updating unit tests to use TaskRunner for resource.delete and
resource.destroy
This parallelises updates for AWS::CloudFormation::Stack resources, but not
for autoscaling groups. Other types of nested stacks (the old LoadBalancer
and DBInstance resources, and provider templates) have not yet implemented
stack updates.
It was previously impossible to stub out a task with mox, because when the
TaskRunner attempted to get the __name__ attribute it prompted an assertion
in the mock. Using hasattr() instead of getattr() eliminates this issue.
Steven Hardy [Mon, 2 Sep 2013 15:32:40 +0000 (16:32 +0100)]
Migrate stored credentials to keystone trusts
Migrate the stored user_creds, which currently only supports
storing username/password credentials to use the keystone v3
API OS-TRUST extension, which allows explicit impersonation of
users calling heat (trustors) by the heat service user (the
trustee)
Note this feature is made optional via a new config option,
defaulted to off, and it requires the following patches to
keystoneclient (in 0.3.2 release) and keystone to work:
Also note that if the feature is enabled, by setting
deferred_auth_method=trusts in heat.conf, you must add
a keystone_authtoken section, which is also used by the
keystoneclient auth_token middleware.
Make error message for InvalidTemplateReference sane
Previously it was more or less incomprehensible. Now it will report the
non-existent resource the uesr tried to reference and the path (starting
with Resources) in the JSON document where the error occurred.
Bartosz Górski [Wed, 14 Aug 2013 10:52:37 +0000 (03:52 -0700)]
Allowing to pass network name to router gateway
This patch allows to pass newtork name instead of network id to create router
gateway. It is really useful feature because often router has gateway as public
network. It is easy to pass the name because id will change after deleting the
network and creating it again.
When getting a database record by ID, it is much more efficient to get() it
directly than to perform a query or the database to obtain the ID (again)
and then get it.
When getting a database record by ID, it is much more efficient to get() it
directly than to perform a query or the database to obtain the ID (again)
and then get it.
Since stack_get() returns only a single record that can be trivially
checked for deletion in code, do this rather than performing a query with a
filter.
Russell Bryant [Fri, 30 Aug 2013 21:57:29 +0000 (17:57 -0400)]
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
Jeff Peeler [Fri, 23 Aug 2013 20:44:37 +0000 (16:44 -0400)]
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.
Steven Hardy [Fri, 30 Aug 2013 10:12:24 +0000 (11:12 +0100)]
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.
Steve Baker [Sun, 18 Aug 2013 23:12:59 +0000 (11:12 +1200)]
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
Liang Chen [Wed, 28 Aug 2013 14:55:42 +0000 (22:55 +0800)]
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.
Clint Byrum [Tue, 27 Aug 2013 16:10:54 +0000 (09:10 -0700)]
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.