通过API重新创建带宽池详细信息屏幕

时间:2018-07-17 14:37:57

标签: ibm-cloud-infrastructure

我正在尝试从带宽池中获取每台计算机的带宽使用情况的编程式转储。

我已经创建了可以使用API​​添加和删除服务器的代码,但是我没有设法找到正确的机制来获取每台机器使用情况的详细信息。

它看起来像:

https://softlayer.github.io/reference/services/SoftLayer_Network_Bandwidth_Version1_Allotment/getDetails/

这是正确的api调用,调用此命令可以给我分配细节的列表,但是我无法计算出正确的掩码来获取我需要的所有细节。

到目前为止,我已经尝试使用以下面具:

“ allocation.amount; allocation.billingItem.hostname; bandwidthAllotment.amount; bandwidthAllotment.billingItem.hostname; bandwidthUsage.amount; bandwidthUsage.billingItem.hostname”

但这并不能为我提供所需的详细信息,而且似乎会引入大量未包含在过滤器中的额外字段,从而使调用花费很长时间才能完成。

有人知道如何构造正确的过滤器吗?

1 个答案:

答案 0 :(得分:0)

要知道移入带宽池机架的所有硬件服务器的带宽使用情况,您必须使用服务SoftLayer_Account的getHardware方法,因为它是控制门户使用的方法和服务。

使用此rest api获取硬件服务器的带宽使用信息:

方法:GET

https://[username]:[apiKey]@api.softlayer.com/rest/v3.1/SoftLayer_Account/getHardware?objectMask=mask[id,primaryIpAddress,datacenter[longName,groups[id]],bandwidthAllocation,outboundPublicBandwidthUsage,billingItem[nextBillDate],virtualRackId,bareMetalInstanceFlag]&objectFilter={"hardware":{"virtualRackId":{"operation":11111}}}

为您的virtualRackId更改virtualRackId:11111,即您正在使用的带宽池ID。

您在控制门户中找到的当前用法,您将在响应中找到该属性,其属性为“ outboundPublicBandwidthUsage”。

在硬件服务器中没有属性“ projectedPublicBandwidthUsage”,但是在虚拟服务器中,您会找到该选项。

参考:

https://softlayer.github.io/reference/datatypes/SoftLayer_Hardware/

对于与带宽池关联的虚拟服务器而言,这是相同的,但是在这种情况下,您将获得属性“ projectedPublicBandwidthUsage”,即控制门户中的“ PROJECTED USAGE”。

将此rest api用于虚拟服务器:

方法:GET

https://[username]:[apiKey]@api.softlayer.com/rest/v3.1/SoftLayer_Account/getVirtualGuests?objectMask=mask[id,primaryIpAddress,datacenter[longName,groups[id]],bandwidthAllocation,outboundPublicBandwidthUsage,billingItem[nextBillDate],virtualRackId,projectedPublicBandwidthUsage]&objectFilter={"virtualGuests":{"virtualRackId":{"operation":11111}}}

与上面相同,更改了带宽池ID的virtualRackId。

参考:

https://softlayer.github.io/reference/datatypes/SoftLayer_Virtual_Guest/