查找未分配的弹性 IP

Find unassigned Elastic IPs

我正在尝试使用 Fog 查找所有未分配的弹性 IP,但 Fog::Compute::AWS::Addresses 中的过滤似乎不允许您过滤空值。

例如,

ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc', 'instance-id' => '')

returns 一个空数组,但是

ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc').find_all {|eip| eip.server.nil? }

结果在我正在寻找的列表中。但是,我们有大量的弹性IP,后一种方法非常慢。

有什么方法可以在 Fog 中过滤空值吗?或者也许是一种更有效的方式来梳理结果以获得我正在寻找的列表?

我找不到我的问题的确切答案,但我找到了一种更快的方法来完成我的任务。 eip.server 将触发 Fog 尝试查找服务器资源,因此如果您可以使用 eip.server_id 来获得更快的结果。即,

ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc').find_all {|eip| eip.server_id.nil? }