如何使用Fog验证AWS服务器终止?

时间:2013-02-08 16:35:04

标签: ruby-on-rails ruby ruby-on-rails-3 amazon-web-services fog

我在'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控制台中实例显示“已终止”后,它似乎就会挂起。

那么,想法?

1 个答案:

答案 0 :(得分:2)

我的一位朋友帮我通过Twitter回答了这个问题。答案是在服务器对象上调用reload()函数,然后检查它。 Fog缓存服务器对象,必须更新它以检查状态。

这是我的最终解决方案:

  @server.reload
  while @server.state != "terminated" do
    sleep 3
    @server.reload
  end

编辑:感谢Frederick Cheung,他在评论中有更好的答案:

@server.wait_for {state == 'terminated'}