我在'begin'块中为Rails应用程序提供了3行代码,用于使用Fog终止AWS计算实例并在成功时设置字符串值:
@server = @connection.servers.get(params[:id])
@server.destroy
@server_deletion_result = "success"
此代码有效,但它只是发送命令将实例终止到AWS。使用Fog,如何验证实例已完成终止?
我试过这个,但无济于事:
while @server.state != "terminated" do
sleep 3
end
@server_deletion_result = "success"
在AWS控制台中实例显示“已终止”后,它似乎就会挂起。
那么,想法?
答案 0 :(得分:2)
我的一位朋友帮我通过Twitter回答了这个问题。答案是在服务器对象上调用reload()函数,然后检查它。 Fog缓存服务器对象,必须更新它以检查状态。
这是我的最终解决方案:
@server.reload
while @server.state != "terminated" do
sleep 3
@server.reload
end
编辑:感谢Frederick Cheung,他在评论中有更好的答案:
@server.wait_for {state == 'terminated'}