我正在尝试使用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 回答
您需要选择位于您正在使用的位置/数据中心的其他商品价格ID .
要根据位置获取有效的商品价格ID,您可以执行:
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]