如何使用REST API

时间:2016-04-06 15:52:50

标签: api rest ibm-cloud-infrastructure

在去年开设的SL支持票据中,我一直在寻找协助解决SoftLayer问题,当我的团队通过一些自定义脚本订购Baremetal服务器时,有时候,在配置过程中与新BM服务器关联的服务器ID会发生变化,此时,我的工具失去了它的跟踪,并失败了。在这张票中:

  

https://control.softlayer.com/support/tickets/21903245

有人告诉我应该使用全局标识符而不是服务器标识。我终于开始测试了,但我看到了一个问题。在我第一次提交请求时,似乎无法使用全局标识符查询新服务器的硬件状态,就像我可以使用服务器ID一样。

[chrisr@ratsy tools]$ curl -k -u chrisr1:<PW> "https://api.softlayer.com/rest/v3/SoftLayer_Hardware/320526/getHardwareStatus.json"
{"id":3,"status":"DEPLOY"}

[chrisr@ratsy tools]$ curl -k -u chrisr1:<PW> "https://api.softlayer.com/rest/v3/SoftLayer_Hardware/75302613-e55a-481a-829f-967799a41968/getHardwareStatus.json"
null

但是,它确实可以使用。我为一个已经准备好配置的服务器运行了相同的查询。

[chrisr@ratsy tools]$ curl -sS -k -u chrisr1:<PW> "https://api.softlayer.com/rest/v3/SoftLayer_Hardware/1ab37f37-9373-4e10-9de4-7319fffcb4f8/getHardwareStatus.json" | json_pp
{
"status" : "ACTIVE",
"id" : 5
}

我需要一个可以查询的标识符:

a)马上就可以了,

b)不会改变

感谢。

2 个答案:

答案 0 :(得分:0)

全局标识符被分配给硬件,直到提供完成为止,因此请求返回&#34; null&#34;值。但是,如果重新分配服务器,则标识符不会更改。

显然,根据您的要求,您不能使用任何标识符来跟踪裸机服务器。

但是,我建议您通过分配给服务器的主机名跟踪服务器配置。

  1. 获取服务器的信息

    ix

    serverHostname 替换为您的服务器主机名 在您的订单中定义。

  2. 响应将提供有关服务器标识符的信息, 然后你可以用它检查服务器的状态。

    https://$user:$apiKey@api.softlayer.com/rest/v3/SoftLayer_Account/getHardware?objectFilter={"hardware":{"hostname":{"operation":"serverHostname"}}}
    
    Method: Get
    
  3. 注意:您需要确保没有多个裸机服务器使用相同的主机名。

答案 1 :(得分:0)

您使用了错误的全局标识符,您的想法是重复查询服务器,直到填写了ProvisionDate,这意味着您调用http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/getObject方法并检查是否已填写“provisionDate”字段,如果字段未填写,则意味着服务器仍处于供应状态。配置服务器完成后,将填写“provisionDate”字段,并且还将更新服务器的ID和其他数据。因此,您无需调用getHardwareStatus方法即可知道服务器是否仍处于供应状态或已完成。