Создание 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());
}
?>
Я надеюсь, что это поможет, дайте мне знать, если вам нужна дополнительная помощь