在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()
并仍然返回空列表。
答案 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返回作为物理服务器的裸机服务器。