{"push_id":2066216147,"size":14,"distinct_size":6,"ref":"refs/heads/master","head":"2a4d9c32f2312d9f25dd42d2e97e564100c6a0d0","before":"bd5a27ea3a7967bea333bc61a8fe92898ec76727","commits":[{"sha":"a8e373d7fe34342490e09285d2271f117aa9530e","author":{"name":"Daniel Miranda","email":"8cf9462140be48345df161bcbbaed61c4b6e7a4e@gmail.com"},"message":"Add handling of stack rollbacks and recreations (#473)\n\n* Add support for automatically re-creating stacks in un-updatable states\r\n\r\nDuring initial development of blueprints and/or configs, it's common for\r\nstacks to fail validation. When that happens, they are left in the\r\nROLLBACK_COMPLETE or CREATE_FAILED states, in which it is not possible\r\nto make any updates. The user must manually delete the stack through the\r\nAWS CLI or Console, then try again.\r\n\r\nIf we know that the state is a safe state to delete, that it was created\r\nby stacker (by observing it's tags), and that we have user confirmation\r\nthrough a prompt or an explicit command line option, we can just delete\r\nthe stack and re-create it without manual intervention.\r\n\r\nImplement support for that workflow by verifying if a stack is updatable\r\nbefore trying, and if negative, doing a delete-then-create sequence\r\ninstead.\r\n\r\n* Add --recreate-failed option to CLI\r\n\r\n* Update integration tests to generate access key automatically\r\n\r\n* Update Plan to wait for rollbacks to finish instead of panicking\r\n\r\nThere's no good reason why we cannot re-use the logic to wait for\r\nsubmitted stacks to wait for their own rollbacks. Now that we handle\r\nre-creating failed stacks, it's much better if stacker always wait until\r\nthere is nothing else in progress, so that the next call can fix things\r\nup.\r\n\r\nTo achieve that, pay attention to rollback states in the default\r\nprovider, and introduce a FAILED state to steps. Steps fail if their\r\nrun_func fails, or if any of the dependencies fail before it runs.\r\n\r\nIf any step of the whole plan fails, and exception is raised in the end.\r\n\r\n* Update build tests to better verify the different cases\r\n\r\nSplit up each one into a different end-to-end test, and use actual state\r\nnames instead of mocking every single checking method.\r\n\r\n* Add stack re-creation integration tests\r\n\r\n* Add update rollback integration tests\r\n\r\n* Make it possible for a plan to fail gracefully without printing a TB\r\n\r\n* Improve error message when a stack fails due to a dependency\r\n\r\n* providers/aws: rename check_tags_present -> check_tags_contain\r\n\r\nAnd add docstring.\r\n\r\n* Document handling of UPDATE_ROLLBACK_COMPLETE stack state\r\n\r\nSince it signals both completion and failure, it needs to be handlec\r\nwith a bit more care than the other states.\r\n\r\n* Improve stack re-creation user messages\r\n\r\n- Point out how to enable re-creation when it is disabled (as\r\nsuggested by @GarisonLotus)\r\n- Be a little more verbose when a stack is in an invalid state for\r\nre-creation\r\n- Remove redundant log message when destroying a stack for re-creation\r\n\r\n* tests: only enable recreate_failed in provider when needed\r\n\r\n* Remove reference to 'plan' when printing failed stacks\r\n\r\n* tests: document how the broken mock blueprint actually breaks\r\n\r\nThe `Timeout` parameter is made excessively large to make AWS reject\r\nit.\r\n\r\n* docs: update commands with new --recreate-failed option\r\n\r\n* exceptions: remove unnecessary parentheses","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/a8e373d7fe34342490e09285d2271f117aa9530e"},{"sha":"6ffac90eb15b1eb0ed13c6460c06b0932e32ca78","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"Allows setting stack description from config (#477)\n\nFixes #475","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/6ffac90eb15b1eb0ed13c6460c06b0932e32ca78"},{"sha":"1c3487619c6d17e8959e132b378c3e843aa6bc73","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"Enable `service_role` config option (#476)\n\n* Enable `service_role` config option\r\n\r\nAllows us to pass a service role when executing cloudformation API\r\ncalls.\r\n\r\nFixes #265\r\n\r\n* Make doc highlight match other sections\r\n\r\n* Use ServiceRole in DeleteStack operations","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/1c3487619c6d17e8959e132b378c3e843aa6bc73"},{"sha":"85eeb9f1b571fa1399cac26a5f6ddac233fa19ad","author":{"name":"Russell Ballestrini","email":"2eba641e4b640f386d9a40d9457a874161b585ea@gmail.com"},"message":"fixes #481\n\tmodified:   docs/blueprints.rst","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/85eeb9f1b571fa1399cac26a5f6ddac233fa19ad"},{"sha":"baf084ba23b6fa05c65e58665ad8454c2c49bcfe","author":{"name":"Russell Ballestrini","email":"2eba641e4b640f386d9a40d9457a874161b585ea@gmail.com"},"message":"Merge pull request #484 from russellballestrini/fix-481\n\nTroposphereType Doc | fixes #481","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/baf084ba23b6fa05c65e58665ad8454c2c49bcfe"},{"sha":"6c31a11664dbc7c9d14bc7e360a3818b8e58a76c","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"Move S3 templates into sub-dirs in S3 (#478)\n\n* Move S3 templates into sub-dirs in S3\r\n\r\nFixes #347\r\n\r\nThis adds another layer to the s3 bucket space to try and keep things a\r\nbit cleaner.  If you had a namespace of `mynamespace`, a bucket of\r\n`mybucket`, and a stack called `vpc`, the old method would have resulted\r\nin an s3 key of:\r\n\r\n`s3://mybucket/vpc-$version.json`\r\n\r\nIt would now result in:\r\n\r\n`s3://mybucket/mynamespace-vpc/vpc-$version.json`\r\n\r\nNot 100% sure that's the best namespace use, but it seems specific\r\nenough and should be helpful.\r\n\r\nI'm pretty sure this will result in slower runs the first time after\r\nupdating to this version of stacker, only because it'll have to upload\r\nall it's templates again, but it shouldn't result in any CloudFormation\r\nupdates.  I'll verify this.\r\n\r\n* Prepend s3 path with `/stack_templates/`","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/6c31a11664dbc7c9d14bc7e360a3818b8e58a76c"},{"sha":"f307e5df500b274db22ab09bf25bcaa43607d137","author":{"name":"Troy Ready","email":"d969203f5fb11a4699004da7c148d1a2960c065c@troyready.com"},"message":"add remote config support (#458)\n\n* add remote config support\r\n\r\nExtends package_sources to support remote configuration files.\r\n\r\n* update docs about hook dictionaries\r\n\r\n* cleanup for code review\r\n\r\n* additional cleanups\r\n\r\n* Clean up the dict -> list stuff","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/f307e5df500b274db22ab09bf25bcaa43607d137"},{"sha":"04fab59fe13f90007dab835a62a516ab26154d90","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"This fixes functional tests with remote configs (#486)\n\nThis fixes the functional tests by making sure that an empty config can\r\nmake it all the way to the `Config` object instantiation, where it will\r\nbe caught by the validator.","distinct":false,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/04fab59fe13f90007dab835a62a516ab26154d90"},{"sha":"79726a102e94aa1551463a591e69d8b0436c2b5e","author":{"name":"GarisonLotus","email":"b4d975cec92d3e4c4407e3e8f3201ed2ad4dc31e@garison.com"},"message":"lambda hook new optional follow_symlinks bool (#474)\n\n* allowing following of symlinks in the lambda prehook.\r\n\r\n* updated documentation in hook docstrings\r\n\r\n* updating name to be snake_case per everyone and adding functools.partial to avoid an addiitonal function per Mike\r\n\r\n* updating walk to be follow_symlink in docstrings and passed in to all functions\r\n\r\n* testing non-bool value, should raise valueerror\r\n\r\n* all tests of every follow_symlinks feature working\r\n\r\n* Fix some typos","distinct":true,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/79726a102e94aa1551463a591e69d8b0436c2b5e"},{"sha":"2fcb5f22c5f644805aecc58520477129aa68d65d","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"Release 1.1.0 (#488)","distinct":true,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/2fcb5f22c5f644805aecc58520477129aa68d65d"},{"sha":"6891a1548029793f984a38ad1b796aa9d5bae51b","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"Update API docs for release 1.1.0 (#489)","distinct":true,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/6891a1548029793f984a38ad1b796aa9d5bae51b"},{"sha":"d33d40882b98056bf270a0527411906b3a272a74","author":{"name":"bwhaley","email":"ac2056db07cac62847c0ba562fe736e2c0ed5947@gmail.com"},"message":"Update awacs to 0.7.x (#490)","distinct":true,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/d33d40882b98056bf270a0527411906b3a272a74"},{"sha":"bf11be121ab8fce0dacc1747b23bcfdacc6bc540","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"Update dependencies","distinct":true,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/bf11be121ab8fce0dacc1747b23bcfdacc6bc540"},{"sha":"2a4d9c32f2312d9f25dd42d2e97e564100c6a0d0","author":{"name":"Michael Barrett","email":"98ff258975b81897452974164a79c8099828cea6@gmail.com"},"message":"Release 1.1.1 (#493)","distinct":true,"url":"https://api.github.com/repos/GarisonLotus/stacker/commits/2a4d9c32f2312d9f25dd42d2e97e564100c6a0d0"}]}
{"actor":{"display_login":"GarisonLotus"}}