如何使用Ruby获取所有SoftLayer机器的订单用户名和provisionDate?

使用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 

但只有一些机器返回provisionDate,只有一些返回orderItem信息。 如何为每台机器始终获取此信息? 什么会导致一台机器返回此数据而另一台机器不返回?

输出示例:

 {"fullyQualifiedDomainName"=>"", "hostname"=>"", "id"=>167719, "provisionDate"=>"", "primaryBackendIpAddress"=>"", "primaryIpAddress"=>"", "billingItem"=> {"recurringFee"=>"506.78", "associatedChildren"=> []}, "datacenter"=>{"name"=>"dal09"}, "tagReferences"=> [{"tagId"=>139415, "tag"=>{"name"=>""}}, {"tagId"=>139417, "tag"=>{"name"=>""}}, {"tagId"=>140549, "tag"=>{"name"=>""}}]} 

要清楚,大多数机器都返回这些数据,所以我试图理解为什么有些人没有。

请参阅以下配置步骤,下面是一个需要考虑的小流程:

 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" }