【发布时间】:2015-12-20 19:17:49
【问题描述】:
我正在尝试使用 Fog 查找所有未分配的弹性 IP,但似乎 Fog::Compute::AWS::Addresses 中的过滤不允许您过滤空值。
例如,
ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc', 'instance-id' => '')
返回一个空数组,但是
ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc').find_all {|eip| eip.server.nil? }
我正在寻找的列表中的结果。但是,我们有大量的弹性 IP,而后一种方法非常慢。
有什么方法可以过滤 Fog 中的空值吗?或者也许是一种更有效的方式来梳理结果以获得我正在寻找的列表?
【问题讨论】:
-
为什么不
'instance-id' => nil? -
@Beartech 这也导致了一个空数组。
-
我对您使用的系统不熟悉,但是您可以使用
.where()吗?如 `.addresses.where( 'domain' => 'vpc' ).where( 'instance-id' => '' ) 。 -
第二个有效的事实让我认为该列是
null,因为.nil?在该查询中返回true。但是像''这样的空白字符串不是零。 -
@Beartech 是请求后映射到模型的 REST API。我怀疑问题出在 Fog 的参数构造函数中,因为我知道 Amazon 的 API 能够过滤空白值。
标签: ruby amazon-web-services fog