0

在 SoftLayer 中,我可以看到我有 2 个裸机服务器。一个我要求取消,但另一个都很好,没有待处理的操作,一切都处于活动状态。但是,当我调用 时SoftLayer_Account::getBareMetalInstances(),它返回一个空列表。为什么?

我也有虚拟客人,并getVirtualGuests()返回它应该返回的东西。它是一个错误getBareMetalInstances()吗?或者我应该使用另一个 API 来获取我的裸机列表?有人也可以试试这个,看看你是否得到相同的结果?

下面是我为此使用的一些代码:

$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
$result = '{}';
if ($type == 'vg') {
   $result = $client->getVirtualGuests();
}
else if ($type == 'bm') {
   $result = $client->getBareMetalInstances();
}
ApsUtilsDebug::Debug(__METHOD__." type=".$type.". result=".json_encode($result));

我也手动尝试使用海报在下面调用:

GET https://api.softlayer.com/rest/v3/SoftLayer_Account/getBareMetalInstances.json
GET https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests.json

我拥有的是每小时裸机服务器。所以我也尝试过getHourlyBareMetalInstances(),但仍然返回空列表。

4

2 回答 2

2

SoftLayer_Account::getBareMetalInstances方法检索裸机实例。这意味着将检索具有“ bareMetalInstanceFlag ”属性为true的裸机。

您需要考虑“裸机实例”与“裸机服务器”不同。

这种服务器(裸机实例)不再可订购。此方法适用于一些尚未拥有此类服务器的帐户。

因此,如果您想检索裸机服务器,以下方法将对此有所帮助:SoftLayer_Account::getHardware

如果您想每小时检索一次裸机服务器,请尝试以下代码:

<?php
/**
 * Get Hourly Bare Metal Servers
 *
 * Important manual pages:
 * @see http://sldn.softlayer.com/reference/services/SoftLayer_Account/getHardware
 * @see http://sldn.softlayer.com/article/Object-Filters
 * @see http://sldn.softlayer.com/article/Object-Masks
 *
 * @license <http://sldn.softlayer.com/wiki/index.php/license>
 * @author SoftLayer Technologies, Inc. <sldn@softlayer.com>
 */
require_once '\vendor\autoload.php';

/**
 * Your SoftLayer API username
 * @var string
 */
$username = "set me";

/**
 * Your SoftLayer API key
 * Generate one at: https://control.softlayer.com/account/users
 * @var string
 */
$apiKey = "set me";

// Create a SoftLayer API client object to the "SoftLayer_Security_Ssh_Key" service
$client = \SoftLayer\SoapClient::getClient('SoftLayer_Account', null, $username, $apiKey);

// Declare an object mask, to get hourlyBillingFlag property
$objectMask = "mask[hourlyBillingFlag]";
$client->setObjectMask($objectMask);

try {
    $hourlyBareMetals = $client -> getHardware();
    foreach($hourlyBareMetals as $server)
    {
        if($server -> hourlyBillingFlag == 1)
        {
            print_r($server);
        }
    }

} catch(Exception $e) {
    echo "Unable to get hourly bare metal servers: " . $e -> getMessage();
}

注意:“hourlyBillingFlag”属性为 true (1) 的服务器是指按小时计费的裸机服务器。

于 2016-01-13T22:26:19.853 回答
1

使用此方法http://sldn.softlayer.com/reference/services/SoftLayer_Account/getHardware

SoftLayer_Account::getBareMetalInstances 返回物理服务器的裸机服务器。

于 2016-01-13T22:16:02.827 回答