2017-01-24 7 views
1

Ich versuche, Virtual Server mit WHM/cPanel auf Softlayer zu erstellen,Erstellen von Softlayer Virtual_Guest mit WHM/cPanel

Leider hat Softlayer-API Code Beispiele und jede API-Aufruf Unterstützung werden die Gebühren auf meinem Konto entstehen.

Und der Dienst generateOrderTemplate validiert nur die erforderlichen Parameter.

Was ist das Problem mit dem folgenden Code?

try { 
     $client = \libraries\SoftLayer\SoapClient::getClient('SoftLayer_Virtual_Guest', null, $apiUsername, $apiKey); 

    } catch (Exception $e) { 
     die('Unable to create service client: ' . $e->getMessage()); 
    } 

    try { 
     $virtualGuest = new \stdClass(); 
     $virtualGuest->datacenter->name = 'ams01'; 
     $virtualGuest->hostname = 'test'; 
     $virtualGuest->domain = 'myDomain.com'; 
     $virtualGuest->startCpus = 1; 
     $virtualGuest->maxMemory = 1024; 
     $virtualGuest->hourlyBillingFlag = false; 
     $virtualGuest->localDiskFlag = true; 
     $virtualGuest->operatingSystemReferenceCode = 'CENTOS_7_64'; 

     $virtualGuest->softwareComponents[0]->softwareDescription->id = 46; 
     $virtualGuest->softwareComponents[0]->softwareDescription->controlPanel = 1; 
     $virtualGuest->softwareComponents[0]->softwareDescription->virtualLicense = 1; 
     $virtualGuest->softwareComponents[0]->softwareDescription->manufacturer = "cPanel"; 

     $virtualGuest->blockDevices[0]->device = 0; 
     $virtualGuest->blockDevices[0]->diskImage->capacity = 25; 

     $call = $client->generateOrderTemplate($virtualGuest); 
     $call = $client->createObject($virtualGuest); 
     print_r($call); 

    } catch (Exception $e) { 
     die('Unable to create Virtual Guest: ' . $e->getMessage()); 
    } 

Dank

Antwort

0

Leider ist es Softwarekomponenten setzen nicht möglich ist mit SoftLayer_Virtual_Guest::createObject stellt dieses Verfahren eine vereinfachte Art und Weise eine vsi (So ist es nur die am häufigsten verwendeten Optionen für sie bietet, um zu bestellen. Mit anderen Worten: bedeutet, dass generateOrderTemplate die gleichen Optionen validieren als SoftLayer_Virtual_Guest :: createObject-Methode), um alle Optionen zu erhalten, die für diese Methode funktionieren, müssen Sie die folgende Methode verwenden:

Wenn Sie eine Control Panel Software für Ihren VSI bestellen möchten, müssen Sie den Preis dieses Artikels im Ergebnis der SoftLayer_Virtual_Guest::generateOrderTemplate

hinzufügen Um die priceId für die Kontrolle zu finden Panel Software, können Sie einen Anruf zu SoftLayer_Product_Package::getItemPrices, mache ich ein Skript zur Verfügung stellen kann, die Preise für das finden helfen:

<?php 
/** 
* Get item prices(Standard) for Control Panel Software from specific package 
* 
* @see http://sldn.softlayer.com/reference/services/SoftLayer_Product_Package/getItemPrices 
* @see http://sldn.softlayer.com/article/object-filters 
* 
* @license <http://sldn.softlayer.com/wiki/index.php/License> 
* @author SoftLayer Technologies, Inc. <[email protected]> 
*/ 
require_once '\vendor\autoload.php'; 

// Define you SoftLayer's username and apiKey 
$apiUsername = 'set me'; 
$apiKey = 'set me'; 

// Define the package 
$packageId = 46; 

// Create a SoftLayer API client object to the "SoftLayer_Product_Package" service 
$client = \SoftLayer\SoapClient::getClient('SoftLayer_Product_Package', $packageId, $apiUsername, $apiKey); 

// Declare an object filter to get Standard - Control Panel Software item prices 
$filter = new stdClass(); 
$filter->itemPrices = new stdClass(); 
$filter->itemPrices->item = new stdClass(); 
$filter->itemPrices->item -> categories = new stdClass(); 
$filter->itemPrices->item -> categories -> name = new stdClass(); 
$filter->itemPrices->item -> categories -> name -> operation = 'Control Panel Software'; 
$filter->itemPrices -> locationGroupId = new stdClass(); 
$filter->itemPrices -> locationGroupId -> operation = "is null"; 
$client->setObjectFilter($filter); 

try{ 
    foreach($client->getItemPrices() as $price){ 
     print_r("PriceId: " . $price -> id . " ItemId: ". $price -> itemId . " Description: " . $price -> item -> description ."\n");  
    } 

} catch (Exception $e) { 
    var_dump($e -> getMessage()); 
} 

?> 

Ich hoffe, es hilft, lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen

+0

Danke Pro, ich werde es versuchen (y) –

Verwandte Themen