如何使用 Ruby 获取所有 SoftLayer 机器的订单用户名和配置日期?
How to get order username and provisionDate for all SoftLayer machines using Ruby?
使用 Ruby 我正在拨打这样的电话:
client = SoftLayer::Client.new(:username => user, :api_key => api_key, :timeout => 999999)
client['Account'].object_mask("mask[id, hostname, fullyQualifiedDomainName, provisionDate, datacenter[name], billingItem[recurringFee, associatedChildren[recurringFee], orderItem[description, order[userRecord[username], id]]], tagReferences[tagId, tag[name]], primaryIpAddress, primaryBackendIpAddress]").getHardware
但只有一些机器 return 一个 provisionDate 并且只有一些 return orderItem 信息。我怎样才能始终如一地获取每台机器的这些信息?什么会导致一台机器 return 此数据而另一台机器不这样做?
示例输出:
{"fullyQualifiedDomainName"=>"<removed_by_me>",
"hostname"=>"<removed_by_me>",
"id"=>167719,
"provisionDate"=>"",
"primaryBackendIpAddress"=>"<removed_by_me>",
"primaryIpAddress"=>"<removed_by_me>",
"billingItem"=>
{"recurringFee"=>"506.78",
"associatedChildren"=>
[<removed_by_me>]},
"datacenter"=>{"name"=>"dal09"},
"tagReferences"=>
[{"tagId"=>139415, "tag"=>{"name"=>"<removed_by_me>"}},
{"tagId"=>139417, "tag"=>{"name"=>"<removed_by_me>"}},
{"tagId"=>140549, "tag"=>{"name"=>"<removed_by_me>"}}]}
需要说明的是,大多数机器 return 这个数据,所以我试图理解为什么有些机器没有。
请参阅以下配置步骤,下面是一些需要考虑的流程:
1. Order a Server
Result:
* An orderId is assigned to the server
* The createDate has a new value
* activeTransaction value is = Null
* provisionDate value is = Null
2. The order is approved
Result:
* activeTransaction value is <> Null
* provisionDate value = Null
3. Server is already provisioned
Result:
* activeTransaction value is = Null
* provisionDate value has a New value
* billingItem property has a new value
要查看您的机器是否还有”activeTransaction”
,请执行:
https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Hardware_Server/[server_id]/getActiveTransaction
Method: GET
现在,在查看您的示例响应后,此服务器在完成配置时遇到了一些问题;出于这个原因,此步骤是手动完成的,但由于任何原因未设置 provisionDate
(如果您希望可以设置 provisionDate,请打开工单)。这是一个特例。我可以看到另一台服务器有类似的行为。但是其他没有provisionDate
的服务器还有”activeTransaction<>null”
(这意味着这些服务器还没有配置)。
编辑:
其他 属性 可以帮助您知道您的机器已经配置,尽管正在执行其他类型的事务,是 “hardwareStatus”
,它应该具有“ACTIVE”值。
https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Account/getHardware?objectMask=mask[id, hostname, fullyQualifiedDomainName, provisionDate,hardwareStatus]
Method: GET
响应应该是这样的:
{
"fullyQualifiedDomainName": "myhostname.softlayer.com"
"hostname": " myhostname"
"id": 1234567
"provisionDate": "2015-06-29T00:21:39-05:00"
"hardwareStatus": {
"id": 5
"status": "ACTIVE"
}
使用 Ruby 我正在拨打这样的电话:
client = SoftLayer::Client.new(:username => user, :api_key => api_key, :timeout => 999999)
client['Account'].object_mask("mask[id, hostname, fullyQualifiedDomainName, provisionDate, datacenter[name], billingItem[recurringFee, associatedChildren[recurringFee], orderItem[description, order[userRecord[username], id]]], tagReferences[tagId, tag[name]], primaryIpAddress, primaryBackendIpAddress]").getHardware
但只有一些机器 return 一个 provisionDate 并且只有一些 return orderItem 信息。我怎样才能始终如一地获取每台机器的这些信息?什么会导致一台机器 return 此数据而另一台机器不这样做?
示例输出:
{"fullyQualifiedDomainName"=>"<removed_by_me>",
"hostname"=>"<removed_by_me>",
"id"=>167719,
"provisionDate"=>"",
"primaryBackendIpAddress"=>"<removed_by_me>",
"primaryIpAddress"=>"<removed_by_me>",
"billingItem"=>
{"recurringFee"=>"506.78",
"associatedChildren"=>
[<removed_by_me>]},
"datacenter"=>{"name"=>"dal09"},
"tagReferences"=>
[{"tagId"=>139415, "tag"=>{"name"=>"<removed_by_me>"}},
{"tagId"=>139417, "tag"=>{"name"=>"<removed_by_me>"}},
{"tagId"=>140549, "tag"=>{"name"=>"<removed_by_me>"}}]}
需要说明的是,大多数机器 return 这个数据,所以我试图理解为什么有些机器没有。
请参阅以下配置步骤,下面是一些需要考虑的流程:
1. Order a Server
Result:
* An orderId is assigned to the server
* The createDate has a new value
* activeTransaction value is = Null
* provisionDate value is = Null
2. The order is approved
Result:
* activeTransaction value is <> Null
* provisionDate value = Null
3. Server is already provisioned
Result:
* activeTransaction value is = Null
* provisionDate value has a New value
* billingItem property has a new value
要查看您的机器是否还有”activeTransaction”
,请执行:
https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Hardware_Server/[server_id]/getActiveTransaction
Method: GET
现在,在查看您的示例响应后,此服务器在完成配置时遇到了一些问题;出于这个原因,此步骤是手动完成的,但由于任何原因未设置 provisionDate
(如果您希望可以设置 provisionDate,请打开工单)。这是一个特例。我可以看到另一台服务器有类似的行为。但是其他没有provisionDate
的服务器还有”activeTransaction<>null”
(这意味着这些服务器还没有配置)。
编辑:
其他 属性 可以帮助您知道您的机器已经配置,尽管正在执行其他类型的事务,是 “hardwareStatus”
,它应该具有“ACTIVE”值。
https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Account/getHardware?objectMask=mask[id, hostname, fullyQualifiedDomainName, provisionDate,hardwareStatus]
Method: GET
响应应该是这样的:
{
"fullyQualifiedDomainName": "myhostname.softlayer.com"
"hostname": " myhostname"
"id": 1234567
"provisionDate": "2015-06-29T00:21:39-05:00"
"hardwareStatus": {
"id": 5
"status": "ACTIVE"
}