I'm not disagreeing with you on that. The expected behaviour should be transparent to the end user. If a call that creates a vm throws an exception the vm shouldn't be created. That means implementing some form of rollback or state keeping to ensure that when multiple tasks are needed to make it happen those tasks are rollback when it fails. (Either that or give the api user fair warning that an exception could indicate that the job is partially completed, but i wouldn't be in favor of this).

There is probably a better way of doing this, but it would require a deeper understanding of jclouds than what i currently have.