2017-01-16 102 views
0

我想使用Python SoftLayer API來返回正在執行的虛擬服務器列表而不是在「RECLAIM_WAIT」狀態下有一個活動事務(這是您刪除時的狀態Softlayer中的虛擬服務器)。我希望找回所有沒有activeTransaction的虛擬服務器,以及那些具有activeTransaction但處於「RECLAIM_WAIT」狀態以外的虛擬服務器。使用Softlayer對象過濾器activeTransaction

我稱之爲VS經理的過濾器,我認爲應該工作:

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

,但它只會返回一個activeTransaction(包括有RECLAIM_WAIT狀態的)情況。

下面是從呼叫的返回的實例的示例:

[{ '狀態':{ '的keyName': 'DISCONNECTED', '名稱': '斷開'}, '數據中心': {'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':'這是一個緩衝時間,客戶可以取消發球R」, '名稱': 'RECLAIM_WAIT'}}, 'globalIdentifier': 'XX', 'primaryBackendIpAddress': 'XXX', 'ID':XXX, '完全限定的域名': 'XXX'}]

我在做什麼錯誤的過濾器?

回答

1

沒有什麼錯在你的要求,不幸的是,這是不可能的篩選交易其的TransactionStatus,因爲交易沒有獲得「transactionStatusId」鍵,你可以在交易中的數據類型檢查,在本地屬性中不存在「transactionStatusId」。

所以,最好的辦法是直接在代碼中進行篩選。