Я хочу заказать почасовой Bare Metal, используя Softlayer java API. Я позаимствовал идею у https://gist.github.com/bmpotter/fe2de7f8028d73ada4e5. Вот мои шаги:
Hardware hardware = new Hardware();
Order orderTemplate = new Order();
// 1. Set hostname, domain to hardware
// 2. set Preset
Preset preset = new Preset();
preset.setKeyName("S1270_8GB_2X1TBSATA_NORAID");
hardware.setFixedConfigurationPreset(preset);
// 3. Component setMaxSpeed, and added to hardware
hardware.setPrimaryNetworkComponent()
// 4. "UBUNTU_14_64"
hardware.setOperatingSystemReferenceCode()
// 1. Added Quantity to orderTemplate
// 2. Added location to orderTemplate
// 3. Added Hardware to orderTemplate
// 4. Added Container, since I am see the exception
orderTemplate.setContainerIdentifier("SoftLayer_Product_Package_Preset");
Finally tried to verify the Order.
Я все время получаю типичное сообщение об ошибке:
Указан недопустимый контейнер: SoftLayer_Container_Product_Order. Для заказа сервера или услуги требуется конкретный тип контейнера, а не общий контейнер базового заказа.
Что я делаю неправильно? Нужно ли мне отправлять priceIds
, аналогично не почасовому заказу на Bare Metal? Есть ли руководство по устранению неполадок, чтобы узнать, чего не хватает в моем заказе?
Педро Давид Фуэнтес. Не могли бы вы помочь? Я попробовал это, выяснив цены:
https://[usernamepting:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Product_Order/verifyOrder
{
"parameters": [
{
"complexType": "SoftLayer_Container_Product_Order_Hardware_Server",
"quantity": 1,
"location": "DALLAS",
"packageId": 200,
"useHourlyPricing": 1,
"presetId": 66,
"prices": [
{
"id": 37318
},
{
"id": 34183
},
{
"id": 26737
},
{
"id": 34807
},
{
"id": 25014
}
],
"hardware": [
{
"hostname": "myhostname",
"domain": "mydomain.com"
}
]
}
]
}
{
"error": "Unable to add a Graphics Processing Unit price (178119) because it is not valid for the package (200).",
"code": "SoftLayer_Exception_Public"
}
Также воспроизводится с помощью кода JAVA, поэтому также пробовал использовать REST.
Модифицированный код с дополнительным логированием:
String username = "xxxxx";
String apiKey = "xxxxx";
Location datacenter = new Location();
datacenter.setName("seo01");
Preset preset = new Preset();
preset.setKeyName("S1270_8GB_2X1TBSATA_NORAID");
Component networkComponent = new Component();
networkComponent.setMaxSpeed(100L);
Hardware hardware = new Hardware();
hardware.setDatacenter(datacenter);
hardware.setHostname("xxxxx_xxxxx_BM_HOURLY");
hardware.setDomain("xxxx.xxx");
hardware.setHourlyBillingFlag(true);
hardware.setFixedConfigurationPreset(preset);
List<Component> networkComponents = hardware.getNetworkComponents();
networkComponents.add(networkComponent);
hardware.setOperatingSystemReferenceCode("CENTOS_LATEST");
ApiClient client = new RestApiClient().withCredentials(username, apiKey).withLoggingEnabled();
Hardware.Service hardwareService = Hardware.service(client);
try
{
Gson gson = new Gson();
Hardware hardwarePlaced = hardwareService.createObject(hardware);
System.out.println("createObject: " + gson.toJson(hardwarePlaced));
}
catch(Exception e)
{
System.out.println("Error: " + e);
}
Я получаю сообщение об ошибке: Выполнение POST для ссылки с телом: {"parameters": [{"complexType": "SoftLayer_Hardware", "hostname": "xxxxx_xxxxx_BM_HOURLY", "domain": "xxxx.xxx", "fixedConfigurationPreset": { "complexType": "SoftLayer_Product_Package_Preset", "keyName": "S1270_8GB_2X1TBSATA_NORAID"}, "datacenter": {"complexType": "SoftLayer_Location", "name": "seo01"}, "hourly trueBillingFlag": {"complexType": "SoftLayer_Network_Component", "maxSpeed": 100}], "operatingSystemReferenceCode": "CENTOS_LATEST"}]} Получено 500 по ссылке с телом: {"error": "Невозможно добавить цену графического процессора (178119 ), потому что он недопустим для пакета (200). "," code ":" SoftLayer_Exception_Public "} Ошибка: com.softlayer.api.ApiException $ Internal: Невозможно добавить цену графического процессора (178119), потому что это не действительно для пакета (200). (код: SoftLayer_Exception_Public, статус: 500)