Запрос API SL ReloadOS

Я пытаюсь реализовать reloadOS() на сайте портала. ОС будет перезагружена с той же конфигурацией. Как установить текущую конфигурацию в качестве параметра для reloadOperatingSystem()?

Могу ли я использовать этот API без «hardware.getID()» для ReloadOS для BareMetal? com.softlayer.api.service.hardware.Server.service(client, hardware.getId()) После включения идентификатора возникает синтаксическая ошибка.

Это код, который я тестировал. Ищу вашу обратную связь .. Спасибо. Майк

    if(deviceType.equals("Virtual Server")){
        for (Guest guest :  Account.service(client).getVirtualGuests()){
            if(guest.getFullyQualifiedDomainName().equals(deviceName))
                Guest.service(client, guest.getId()).reloadOperatingSystem("FORCE", config);
        }
    }else if(deviceType.equals("Bare Metal Server")){
            for (Hardware hardware :  Account.service(client).getHardware()){
                if(hardware.getFullyQualifiedDomainName().equals(deviceName)){
                        com.softlayer.api.service.hardware.Server.service(client).reloadOperatingSystem("FORCE", config) ;
                }
            }
    }   

person Mike Oh    schedule 29.01.2016    source источник
comment
Проверьте stackoverflow.com/questions/38381633/softlayer-os-reload- API тоже.   -  person CSN    schedule 19.07.2016


Ответы (1)


О боже, боюсь, это проблема, см. https://github.com/softlayer/softlayer-java/issues/21

Чтобы перезагрузить сервер с той же конфигурацией, вам нужно вызвать этот метод: http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/reloadCurrentOperatingSystemConfiguration

Как видите, это обязательный параметр для установки «id», иначе он не будет работать.

Это мое предложение, вы можете изменить код класса «com.softlayer.api.service.hardware.Server».

Найдите этот метод в классе:

public static Service service(ApiClient client) {
        return client.createService(Service.class, null);
    }

И ниже этого метода добавьте этот метод:

public static Service service(ApiClient client, Long id) {
        return client.createService(Service.class, id == null ? null : id.toString());
    }

Таким образом, вы сможете установить идентификатор в службе (я не смог найти способ установить идентификатор после создания службы, и я боюсь, что такой метод вообще не работает). Вы можете использовать этот код для перезагрузки сервера

import com.google.gson.Gson;
import com.softlayer.api.ApiClient;
import com.softlayer.api.RestApiClient;
import com.softlayer.api.service.Account;
import com.softlayer.api.service.Hardware;
import com.softlayer.api.service.Hardware.Service;
import com.softlayer.api.service.container.hardware.server.Configuration;
import com.softlayer.api.service.hardware.Server;
//import com.softlayer.api.service.hardware.Server.Service;

public class ReloadBareMetal {

    public static void main(String[] args) {

        String user = "set me";
        String apikey = "set me";

        String deviceName =  "example.example.com";

        // Declare the API client
        ApiClient client = new RestApiClient().withCredentials(user, apikey);
        Account.Service accountService = Account.service(client);



        try {
            for (Hardware hardware :  Account.service(client).getHardware()){
                if(hardware.getFullyQualifiedDomainName().equals(deviceName)){
                    System.out.println("yepes");
                         Configuration conf = new Configuration();
                         //Hardware.Service hardwareService =  Hardware.service(client,hardware.getId());

                         Server.Service hardwareService =  Server.service(client, hardware.getId());

                         //hardwareService.
                         hardwareService.reloadCurrentOperatingSystemConfiguration("FORCE");
                }
            }

        } catch (Exception e) {
            System.out
                    .println("Unable to reload. " + e.getMessage());
        }
}

}
person Nelson Raul Cabero Mendoza    schedule 29.01.2016
comment
Спасибо, я обновил класс сервера в lib и работает! - person Mike Oh; 01.02.2016