That's one approach, but if the reason that these things fail is due to some api call failure, then maybe a CloudAPIException or just a plain old Ruby RuntimeError is appropriate. The consumer of the errors is either a knife command user or another application using our knife commands as a library. In both cases, their context is sufficent to know there was an error listing resources -- we want to give them some feedback on the underlying cause if we can. If it's truly an error returned from the cloud API, hopefully the message can contain a status code and / or detailed message to help troubleshoot.