2016-08-01 61 views
0

我下了一个订单来通过api(python)“placeOrder”升级虚拟机的硬件,它成功返回。我用“wait_for_transaction”(VSManager中的函数)来等待这个事务完成。几分钟后,它也成功返回。但是,当我登录网站“control.softlayer.com”时,我发现升级票据显示它已被取消,并说“XXXX由于数据中心池资源不足而无法完成”。升级请求已被取消并且此票已关闭“。Softlayer API - 如何检查我的订单是否被接受

那么我怎么能检查这个订单已经被接受和处理成功了?我需要知道订单结果。

回答

2

VSManager中的“wait_for_transaction”函数仅检查事务状态是否未挂起,这就是为什么尽管事务失败,结果仍然成功。 要验证升级是否有效,需要查看上次事务的状态。

你可以使用Python客户端查看下一个示例脚本:

""" 
Retrieve a computing instance's associated upgrade request object if any. 

Important manual pages: 

http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getUpgradeRequest 
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Upgrade_Request 
https://sldn.softlayer.com/article/object-masks 

License: http://sldn.softlayer.com/article/License 
Author: SoftLayer Technologies, Inc. <[email protected]> 
""" 
import SoftLayer 
from pprint import pprint as pp 

virtualGuestId = 12345678 

USERNAME = 'set me' 
API_KEY = 'set me' 

client = SoftLayer.Client(username=USERNAME, 
          api_key=API_KEY) 

virtualGuestService = client['SoftLayer_Virtual_Guest'] 

objectMask = 'mask[completedFlag,order,status,ticket[title,id],virtualGuest[id,fullyQualifiedDomainName,lastTransaction[transactionGroup]]]' 

try: 
    upgradeRequest = virtualGuestService.getUpgradeRequest(mask=objectMask, id=virtualGuestId) 
    # The result should display the upgrade request status, order status, ticket associated 
    # and the last transaction and transaction status of the current Virtual Guest. 
    # Note: The upgrade request status could be the next: 
    # APPROVED 
    # PENDING 
    # PENDING_CUSTOMER_APPROVAL 
    # COMPLETE 
    # CANCELLED 
    # MAINTENANCE_UPDATE_REQUIRED 
    # IN_TRANSACTION 
    # PENDING_PAYMENT_PROCESS 
    # PENDING_AUTOMATED_FINALIZE 
    pp(upgradeRequest) 
except SoftLayer.SoftLayerAPIError as e: 
    pp('Unable to upgrade the VSI faultCode=%s, faultString=%s' 
    % (e.faultCode, e.faultString))