私は基本的に、ベアメタル サーバーで EVault を注文するためにここに投稿された内容に従っています: SoftLayer で EVault バックアップを注文するためのサンプル コード
仮想ゲストでは機能しますが、ベア メタル サーバーでは verifyOrder 呼び出しで失敗し、次のようなエラー メッセージが表示されます。
There was an error querying the SoftLayer API: EVault orders must be tied to exactly 1 server.
これは私が持っている入力の種類であり、指定されたハードウェアは 1 つしかありません。正確に 1 つのサーバーがないと見なされる理由がわかりません。
stdClass Object
(
[location] => 168642
[packageId] => 0
[prices] => Array
(
[0] => stdClass Object
(
[id] => 22747
)
)
[quantity] => 1
[useHourlyPricing] =>
[hardware] => Array
(
[0] => stdClass Object
(
[id] => 168137
)
)
)
これは、テストに使用している PHP コードです。(最初の require ステートメントをいくつか削除しました)。これは 1 時間ごとのベア メタル サーバーを参照しており、サンプルに示されているすべてのデータは $apiUsername と $apiKey を除いて実際のものです。
<?php
$apiUsername = 'xxxxx';
$apiKey = 'xxxxx';
$hardware = new stdClass();
$hardware->id = 168137;
$orderHardware = array
(
$hardware
);
# The location for the Evault
$location = "168642";
$packageId = 0;
$quantity = 1;
$prices = array
(
22747,
);
// Convert our item list into an array of skeleton
$orderPrices = array();
foreach ($prices as $priceId) {
$price = new stdClass();
$price->id = $priceId;
$orderPrices[] = $price;
}
// Build a SoftLayer_Container_Product_Order_Network_Storage_Backup_Evault_Vault object containing
// the order you wish to place.
$orderTemplate = new stdClass();
$orderTemplate->location = $location;
$orderTemplate->packageId = $packageId;
$orderTemplate->prices = $orderPrices;
$orderTemplate->quantity = $quantity;
$orderTemplate->useHourlyPricing = false;
$orderTemplate->hardware = $orderHardware;
print_r($orderTemplate);
// Place the order.
try {
// Re-declare the order template as a SOAP variable, so the SoftLayer
// ordering system knows what type of order you're placing.
$orderTemplate = new SoapVar
(
$orderTemplate,
SOAP_ENC_OBJECT,
'SoftLayer_Container_Product_Order_Network_Storage_Backup_Evault_Vault',
'http://api.service.softlayer.com/soap/v3/'
);
$softLayer_product_order = SoftLayer_SoapClient::getClient('SoftLayer_Product_Order', null, $apiUsername, $apiKey);
$receipt = $softLayer_product_order->verifyOrder($orderTemplate);
print_r($receipt);
} catch (Exception $e) {
echo 'Unable to place server order: ' . $e->getMessage();
}
?>
やって集めたベアメタルサーバー(168137)のデータです
GET https://api.softlayer.com/rest/v3/SoftLayer_Hardware/168137/getObject.json?objectMask=activeTransaction.transactionGroup
{
"accountId" : 79###,
"bareMetalInstanceFlag" : 0,
"domain" : "x.net",
"fullyQualifiedDomainName" : "x.x.net",
"globalIdentifier" : "2###-##a-4#7-a##6-ed##5",
"hardwareFunction" : {
"code" : "WEBSVR",
"description" : "Web Server",
"id" : 3
},
"hardwareStatus" : {
"id" : 5,
"status" : "ACTIVE"
},
"hardwareStatusId" : 5,
"hostname" : "xxxxx",
"id" : 168137,
"managedResourceFlag" : false,
"manufacturerSerialNumber" : "S0#####2009275E",
"networkManagementIpAddress" : "10.##.###.###",
"notes" : "",
"primaryBackendIpAddress" : "10.##.###.###",
"primaryIpAddress" : "198.##.###.###",
"privateIpAddress" : "10.##.###.###",
"provisionDate" : "2016-01-15T09:20:55-06:00",
"serialNumber" : "ASL####",
"serviceProviderId" : 1,
"serviceProviderResourceId" : 168137
}