SoftLayer_Account :: getBareMetalInstances()不起作用?

时间:2016-01-13 21:06:00

标签: ibm-cloud-infrastructure

在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));

我也尝试使用Poster手动尝试调用以下内容:

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

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

2 个答案:

答案 0 :(得分: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)的服务器是指每小时裸机服务器。

答案 1 :(得分:1)

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

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