2016-01-29 22 views
0

我想在門戶網站上實現reloadOS()。 操作系統將重新加載相同的配置。 如何將當前配置設置爲reloadOperatingSystem()的參數?SL ReloadOS API查詢

我可以在沒有「hardware.getID()」的情況下使用此API來爲BareMetal重新加載OS嗎? com.softlayer.api.service.hardware.Server.service(客戶端,hardware.getId()) 一旦包含ID,它就會產生語法錯誤。

這是我測試過的代碼。 尋找您的反饋..謝謝。 邁克

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) ; 
       } 
      } 
    } 
+0

退房http://stackoverflow.com/questions/38381633/softlayer-os-reload-api了。 – CSN

回答

0

哦,恐怕這是一個問題,看到https://github.com/softlayer/softlayer-java/issues/21

爲了使用需要調用這個方法相同的配置來重新加載服務器: http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/reloadCurrentOperatingSystemConfiguration

由於你可以看到它是一個必需的參數來設置「ID」,否則它將無法工作。

這是我的建議,你CA改變「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()); 
    } 

這樣一來這樣你就能夠設置ID的服務(我找不到任何方法創建服務後設置ID恐怕這種方法根本不會退出)。您可以使用此代碼重新加載服務器

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

} 
+0

謝謝你,我已經更新了lib中的Server類並且工作正常! –