SoftLayer_Account::getBareMetalInstances() 不工作?

SoftLayer_Account::getBareMetalInstances() not working?

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

我也有虚拟访客,getVirtualGuests() return 应该是 return。这是 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(),但仍然是 return 的空列表。

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

SoftLayer_Account::getBareMetalInstancesreturns裸机服务器是物理服务器。

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

You need to consider that "Bare Metal Instances" are different than "Bare Metal Servers".

此类服务器(裸机实例)不再可订购。部分已有此类服务器的账号可以使用此方法

因此,如果您想取回裸机服务器,以下方法会有所帮助: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" 属性为真(1)的服务器,指的是按小时计费的裸机服务器。