首页 文章

使用Softlayer对象过滤器进行activeTransaction

提问于
浏览
0

我正在尝试使用Python SoftLayer API返回虚拟服务器列表 not 具有"RECLAIM_WAIT"状态的活动事务(这是您在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'},'datacenter':{'statusId':2,'id':265592,'name':'xxxx', 'longName':'xxx'},'domain':'xxxx','powerState':{'keyName':'HALTED','name':'Halted'},'maxCpu':2,'maxMemory':8192 ,'hostname':'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,'transactionStatus':{'friendlyName':'这是客户可以取消服务器的缓冲时间','name':'RECLAIM_WAIT'}},'globalIdentifier':'xx ','primaryBackendIpAddress':'xxx','id':xxx,'fullQualifiedDomainName':'xxx'}]

我在过滤器上做错了什么?

1 回答

  • 1

    您的请求没有任何问题,遗憾的是,它不可能为其 transactionStatus 过滤事务,因为 transaction doesn't have access to "transactionStatusId" key ,您可以检查事务数据类型,本地属性中不存在"transactionStatusId" .

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

相关问题