We shouldn't assume the machine is not created; Libvirt::RetrieveError is raised both when the object you're looking for does not exist and when there's an actual error condition. I handled this in 1484a9fb (41-49) by checking the error message and re-raising the exception if it wasn't what we expected. That felt fragile, but I couldn't think of a better way. Could you do the same here?