infochimps-labs/ironfan — pull request #167 by mrflip (2012-09-24 04:28:42+00:00)
Title: Better logging; errors within Ironfan.parallel don't crash the world

Cherry pick the following two commits:

### c193f38 - Ironfan.parallel catches errors per-thread; Ironfan.safely returns the exception

If one thread in a .parallel run hits a brick on the AWS or opscode side (Launching 10+ machines at a time is a great way to see this happen), the entire run will crash and put things in an uneven state.

* Parallel keeps track of the return value of each thread, and runs it inside 'safely'.
* Safely now returns the exception if there was a problem
* Together, you can then say 'results.each{|result| next if result.is_a?(Exception) ; ... }'

### 4cafbc0 -- Cleanup of progress reporting and object display

* knife cluster show outputs the chef config
* resources have a readable-in-parallel #to_s method
* in-progress reporting for discovery, so you know whether to be angry with Opscode or AWS
* Moved the refactoring notes to an Ironfan.todo helper -- set Chef::Config[:show_todo] on to see them.