2016-01-13 27 views
0

在SoftLayer中,我可以看到我有2個裸機服務器。其中一個我要求取消,但其他一個都很好,沒有待處理的動作,一切都處於活動狀態。但是,當我調用SoftLayer_Account::getBareMetalInstances()時,它將返回一個空列表。爲什麼?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(),仍然返回空列表。

回答

2

SoftLayer_Account :: getBareMetalInstances方法檢索裸機實例。這意味着將檢索具有「裸金屬實例標誌」屬性作爲的裸金屬。

您需要考慮「裸機實例」與 「裸機服務器」不同。

這種服務器(裸金屬實例)不再可訂購。此方法適用於某些擁有此類服務器的帳戶。

所以,如果你想找回您的裸機服務器,下面的方法將有助於這一點: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. <[email protected]> 
*/ 
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(true)的服務器是指小時裸機服務器。