使用Softlayer对象过滤器进行activeTransaction

时间:2017-01-16 17:46:27

标签: python ibm-cloud-infrastructure

我正在尝试使用Python SoftLayer API返回在" RECLAIM_WAIT"中执行活动事务的虚拟服务器列表。 status(在Softlayer中删除虚拟服务器时的状态)。我希望能够取回所有没有activeTransaction的虚拟服务器,以及那些具有activeTransaction但处于" RECLAIM_WAIT"以外的状态的虚拟服务器。

我用一个我认为应该有效的过滤器来调用vs manager:

f={'virtualGuests': {'activeTransaction': {'transactionStatus': {'name': {'operation': '!= RECLAIM_WAIT'}}}}}
instance = vs.list_instances(hostname="node5-0",filter=f)

但它只返回具有activeTransaction的实例(包括具有RECLAIM_WAIT状态的实例)。

以下是该调用返回实例的示例:

  

[{' status':{' keyName':' DISCONNECTED',' name':' Disconnected' },'数据中心':{' statusId':2,' id':265592,' name':' xxxx&#39 ;,' longName':' xxx'},'域':' xxxx',' powerState':{& #39; keyName':' HALTED',' name':' Halted'},' maxCpu':2,&#39 ; maxMemory':8192,'主机名':' node5-0',' primaryIpAddress':' xxxx',' activeTransaction':{' modifyDate':' 2017-01-16T05:20:01-06:00',' statusChangeDate':' 2017 -01-16T05:20:01-06:00',' elapsedSeconds':22261,' createDate':' 2017-01-16T05:19:05- 06:00',' hardwareId':'',' guestId':27490599,' id':46204349,&#39 ; transactionStatus':{' friendlyName':'这是客户可以取消服务器的缓冲时间',' name':' RECLAIM_WAI T'}},' globalIdentifier':' xx',' primaryBackendIpAddress':' xxx',' id&#39 ;:xxx,' fullQualifiedDomainName':' xxx'}]

我对过滤器做错了什么?

1 个答案:

答案 0 :(得分:1)

您的请求中没有任何错误,遗憾的是,无法过滤 transactionStatus 的交易,因为交易无法访问&# 34; transactionStatusId"密钥,你可以检查事务数据类型,不存在" transactionStatusId"在当地的房产。

因此,最好的方法是直接在代码中过滤。