通过SL API配置VM时,没有订单号

时间:2018-02-27 04:04:11

标签: ibm-cloud ibm-cloud-infrastructure

我通过API为SL帐户1473995配置VM时的订单号。这是由API配置的一个VM:https://control.softlayer.com/devices/details/50115597/virtualGuest

因为我可以在控制门户中配置VM并获得订单号。

API调用与门户网站之间有什么不同吗?由于API现在无法获得订单号(2月3日工作正常)。

如果需要手动执行api呼叫配置VM的步骤,任何人都可以帮助查看帐户参数吗?

这是我的代码的一部分:

service := services.GetVirtualGuestService(sess)

// Create a Virtual_Guest instance as a template
vGuestTemplate := datatypes.Virtual_Guest{
Hostname: sl.String(spec.HostName),
Domain: sl.String(spec.Domain),
MaxMemory: sl.Int(spec.Memory),
StartCpus: sl.Int(spec.CPUs),
Datacenter: &datatypes.Location{Name: sl.String(spec.DataCenter)}, // Dal 12
OperatingSystemReferenceCode: sl.String(spec.OperatiingSystem), // UBUNTU_LATEST
LocalDiskFlag: sl.Bool(true),
HourlyBillingFlag: sl.Bool(true),
PrivateNetworkOnlyFlag: sl.Bool(true),
SshKeys: sshkeys,   
PrimaryBackendNetworkComponent: &datatypes.Virtual_Guest_Network_Component{NetworkVlan: &datatypes.Network_Vlan{Id: sl.Int(spec.VlanID)}, // VlanID is 2177691
},  
}

vGuest, err := service.Mask("id;domain").CreateObject(&vGuestTemplate)

1 个答案:

答案 0 :(得分:0)

createObject方法永远不会返回orderId,与门户网站的不同之处在于门户网站使用的placeOrder方法比createObject方法更复杂:

在这里你可以看到有关placeOrder方法使用的一些解释: https://sldn.softlayer.com/blog/bpotter/going-further-softlayer-api-python-client-part-3

现在可以使用对象掩码从VM获取orderId,这是一个RESTFul示例:

https://api.softlayer.com/rest/v3.1/SoftLayer_Virtual_Guest/$VMID/getObject?objectMask=mask[id,billingItem[id,orderItem[id,order]]]

只需用创建对象方法返回的id替换$ VMID,或者也可以使用也由createObject方法返回的globalId,注意如果不是apporved则需要批准VM顺序请求不会工作

当您使用GO客户端时,您只需翻译上述请求即可。