2016-01-13 4 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 извлекает экземпляры голых металлов. Это означает, что голые металлы, у которых есть «bareMetalInstanceFlag», как true, будут получены.

Вы должны учитывать, что "Bare Metal Instances" отличаются от "Bare Metal Servers".

Этот вид серверов (Bare Metal Instances) больше не заказывается. Этот метод доступен для некоторых учетных записей, у которых есть такие серверы.

Так что, если вы хотите получить ваши неокрашенные сервера, следующий метод поможет для этого: 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 (1), относятся к серверам ежечасно голых металлов.