Создание SoftLayer Virtual_Guest с помощью WHM/cPanel

Я пытаюсь создать виртуальный сервер с WHM/cPanel на Softlayer,

К сожалению, API-интерфейс Softlayer не поддерживает примеры кода, и любой вызов API будет взимать плату с моего аккаунта.

И служба generateOrderTemplate не будет проверять, а только необходимые параметры.

В чем проблема со следующим кодом?

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());
    }

Спасибо

1 ответ

К сожалению, невозможно установить softwareComponents, используя http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/createObject, этот метод предоставляет упрощенный способ заказа vsi(поэтому он предоставляет только самые распространенные параметры для него. Другими словами, означает, что generateOrderTemplate будет проверять те же параметры, что и SoftLayer_Virtual_Guest:: метод createObject), чтобы получить все параметры, которые работают для этого метода, вам необходимо использовать следующий метод:

Если вы хотите заказать программное обеспечение панели управления для вашего VSI, вам нужно добавить цену этого элемента в результате http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/generateOrderTemplate

Чтобы найти priceId для ПО панели управления, вы можете позвонить в http://sldn.softlayer.com/reference/services/SoftLayer_Product_Package/getItemPrices, я могу предоставить скрипт, который поможет найти цены на это:

<?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. <sldn@softlayer.com>
 */
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());
}

?>

Я надеюсь, что это поможет, дайте мне знать, если вам нужна дополнительная помощь

Другие вопросы по тегам