Mitch Garnaat

Resolving merge conflict.

...@@ -40,6 +40,9 @@ Where ``command`` is one of: ...@@ -40,6 +40,9 @@ Where ``command`` is one of:
40 The ``config file`` is a YAML format file containing all of the information 40 The ``config file`` is a YAML format file containing all of the information
41 about your Lambda function. 41 about your Lambda function.
42 42
43 +If you use environment variables for your AWS credentials (as normally supported by boto),
44 +simply exclude the ``profile`` element from the YAML file.
45 +
43 An example project based on a Kinesis stream can be found in 46 An example project based on a Kinesis stream can be found in
44 [samples/kinesis](https://github.com/garnaat/kappa/tree/develop/samples/kinesis). 47 [samples/kinesis](https://github.com/garnaat/kappa/tree/develop/samples/kinesis).
45 48
...@@ -56,4 +59,4 @@ The basic workflow is: ...@@ -56,4 +59,4 @@ The basic workflow is:
56 * Run ``kappa --config <path-to-config> tail`` to see more output 59 * Run ``kappa --config <path-to-config> tail`` to see more output
57 60
58 If you have to make changes in your function or in your IAM roles, simply run 61 If you have to make changes in your function or in your IAM roles, simply run
59 -``kappa deploy`` again and the changes will be uploaded as necessary.
...\ No newline at end of file ...\ No newline at end of file
62 +``kappa deploy`` again and the changes will be uploaded as necessary.
......
...@@ -22,6 +22,7 @@ LOG = logging.getLogger(__name__) ...@@ -22,6 +22,7 @@ LOG = logging.getLogger(__name__)
22 class Stack(object): 22 class Stack(object):
23 23
24 completed_states = ('CREATE_COMPLETE', 'UPDATE_COMPLETE') 24 completed_states = ('CREATE_COMPLETE', 'UPDATE_COMPLETE')
25 + failed_states = ('ROLLBACK_COMPLETE')
25 26
26 def __init__(self, context, config): 27 def __init__(self, context, config):
27 self._context = context 28 self._context = context
...@@ -91,6 +92,9 @@ class Stack(object): ...@@ -91,6 +92,9 @@ class Stack(object):
91 LOG.debug('Stack status is: %s', status) 92 LOG.debug('Stack status is: %s', status)
92 if status in self.completed_states: 93 if status in self.completed_states:
93 done = True 94 done = True
95 + if status in self.failed_states:
96 + msg = 'Could not create stack %s: %s' % (self.name, status)
97 + raise ValueError(msg)
94 98
95 def create(self): 99 def create(self):
96 LOG.debug('create_stack: stack_name=%s', self.name) 100 LOG.debug('create_stack: stack_name=%s', self.name)
......