首页 文章

Softlayer API验证订单失败

提问于
浏览
0

我正在尝试使用Softlayer Python客户端在Softlayer中订购虚拟服务器 . 我的订单json看起来像这样:

order = {
'complexType': 'SoftLayer_Container_Product_Order_Virtual_Guest', 
'quantity': 1, 
'virtualGuests': [
      {
        'hostname': 'test', 
        'domain': 'example.com', 
        'primaryBackendNetworkComponent': {
            'networkVlan': {
              'id': 752950
            }
           }
      }
],
'location': 142775, 
'packageId': 46, 
'useHourlyPricing': True,
'prices': [
           {'id': 112863},  # 2 x 2.0 GHz Core
           {'id': 153861},  # 1 GB RAM
           {'id': 23070},  # Reboot / Remote Console
           {'id':  155153},  # 1 Gbps Public & Private Networks
           {'id': 164857},  # 1000 GB Bandwidth
           {'id': 34807},  # 1 IP Address
           {'id': 24013},  # 25 GB (SAN)
           {'id': 23820},  # OS_WINDOWS_2012_FULL_STD_64_BIT
           {'id': 27023},  # Host Ping Monitoring
           {'id': 32500},  # Email and Ticket Notifications
           {'id': 32627},  # Automated Notification Response
           {'id': 33483},  # Unlimited SSL VPN Users & 1 PPTP VPN User per account
           {'id': 36536} # VMWARE VCenter addon
]
}

我在实际放置之前验证了订单:

client['Product_Order'].verifyOrder(order)

但我一直收到此错误消息: The price for 2 x 2.0 GHz Cores (#112863) is not valid for location hou02. 我已经尝试了所有其他位置,但我一直收到相同的错误消息 . 你知道我可以解决这个问题吗?

1 回答

  • 1

    您需要选择位于您正在使用的位置/数据中心的其他商品价格ID .

    要根据位置获取有效的商品价格ID,您可以执行:

    https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Product_Package/46/getItemPrices?objectMask=mask[id,locationGroupId,item[keyName,description],pricingLocationGroup[locations[id, name, longName]]]
    

    Method: GET

    Note: 具有locationGroupId = null的price id被视为"A standard price",API将在内部切换客户的价格 . 但我们建议首先执行verifyOrder,以查看所需订单是否正常(费用可能会有所不同) .

    此外,以下请求可以帮助您根据特定的位置/数据中心获取有效的商品价格(只需在上一个请求中添加一些过滤器):

    • 根据具体包装提供可用位置的价格清单:

    [https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Product_Package/[package_id]/getItemPrices?objectMask=mask[id,item.description,hourlyRecurringFee,locationGroupId,pricingLocationGroup[locationsid,name,longName]]]&objectFilter = {"itemPrices":{"pricingLocationGroup":{"locations":{"id":{_ "operation":"814994"}}}}}

    Where: "814994"是"Amsterdam 3"

    Method: GET

    • 此外,列出包含可用位置的包:

    https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Account/getActivePackages?objectMask=mask[id,name,description,subDescription,locations]

相关问题