2017-01-09 4 views
1

Ich überprüfe, um NAS-Speicherliste zu erhalten.SoftLayer API: getNasNetworkStorage Rückgabe null

I 2 Arten getestet, wird eine Art und Weise BAP-ID verwendet wird, ist eine andere Art und Weise direkt Konto-ID

  • erste

    1. BAP-ID verwenden, Kontoliste.
    2. Verwenden Sie die Konto-ID, um die NAS-Speicherliste zu erhalten. ==> habe ich nicht NAS Storage Liste
  • Sekunden

    1. direkte Konto-ID, erhalten NAS Storage Liste ===> successly, erhalten NAS Storage Liste

Ich verstehe nicht Unterschied zwischen den Wegen.

ich angehängt ersten Testcode, "getNasNetworkStorageCount" -Methode zurückgegeben NAS Stroage Count, aber "getNasNetworkStorage" zurück "null".


public void Test() {

String userId = "IBMxxxxx"; 
    String apiKey = "xxxxx"; 

    client = new RestApiClient().withCredentials(userId, apiKey).withLoggingEnabled(); 

    Account.Service accountService = Account.service(client); 
    List<Brand> brandList = accountService.getOwnedBrands(); 

    for (Brand brand : brandList) { 

     Brand.Service brandService = brand.asService(client); 

     Account.Mask mask = new Account.Mask(); 
     mask.id(); 
     mask.companyName(); 
     mask.accountStatusId(); 
     mask.email(); 
     mask.hardwareCount(); 
     mask.hardware(); 
     mask.virtualGuestCount(); 
     mask.virtualGuests(); 

     mask.nasNetworkStorage(); 
     mask.nasNetworkStorageCount(); 

     brandService.clearMask(); 
     brandService.setMask(mask); 

     List<Account> accountList = accountList = brandService.getOwnedAccounts(); 

     for (Account account : accountList) { 
      if(account.getNasNetworkStorageCount() != 0){ 
       System.out.print(account.getNasNetworkStorageCount() + " == "); 
       System.out.println(account.getNasNetworkStorage().size()); 

      }     
     } 
     System.out.println(accountList.size()); 
    } 

} 

Antwort

0

Ihre Ergebnisse könnten diejenigen sein, denn wenn man die SoftLayer_Brand run :: getOwnedAccounts Methode nur das Konto für den aktuellen Benutzer zurückgibt (dh der Benutzer, der anruft, die API)

Sie können dieses Java-Beispiel ausführen und sehen, dass die Marke effektiv das richtige Konto für den Benutzeraufrufer und dann alle zugehörigen NAS-Netzwerkspeicher abruft.

package SoftLayer_Java_Scripts.Examples; 

import com.google.gson.Gson; 
import com.softlayer.api.*; 
import com.softlayer.api.service.Account; 
import com.softlayer.api.service.Brand; 
import com.softlayer.api.service.network.Storage; 
import java.util.List; 

public class GetNasNetworkStorage 
{ 
    public static void main(String[] args) 
    { 
    String user = "set me"; 
    String apiKey = "set me"; 

    long brandId = 2L; 

    ApiClient client = new RestApiClient().withCredentials(user, apiKey); 
    Brand.Service brandService = Brand.service(client, brandId); 

    try 
    { 
     List<Account> accountsList = brandService.getOwnedAccounts(); 
     Gson gson = new Gson(); 
     for (Account account : accountsList) { 
     Account.Service accountService = account.asService(client); 
     List<Storage> nasStorageList = accountService.getNasNetworkStorage(); 
     for (Storage storage : nasStorageList) { 
      System.out.println(gson.toJson(storage)); 
     } 
     } 
    } 
    catch(Exception e) 
    { 
     System.out.println("Script failed, review the next message for further details: " + e.getMessage()); 
    } 
    } 
} 
+0

getOwnedAccounts() return Marke eigene Rechnung. Wenn also Code ausgeführt werden soll, wurde die Kontoliste nicht zurückgegeben. – HyungJun

0

Der Unterschied ist, dass die Marke Service-Marke Konten zu verwalten, ist whilts direkt der Konto-Dienst ist es, alle Informationen über ein bestimmtes Konto zu verwalten.

Momentan kann es ein Problem mit der von Ihnen verwendeten Objektmaske geben, jedoch besteht das Problem bei der Verwendung des Markenservices darin, dass dieser Dienst nur die Basisinformationen aller Konten anzeigt, die zu der Marke gehören nicht dazu gedacht, alle Informationen der zugehörigen Konten anzuzeigen (auch wenn Sie Objektmasken verwenden). Ich werde das Problem der Objektmaske an Softlayer melden, ich meine den Zusammenhang, dass der nasNetworkStorage null zurückgibt, aber ich habe bereits ähnliche Probleme gemeldet und sie haben es nicht behoben, weil ich Ihnen gesagt habe, dass das nicht der Grund für das ist Bedienung.

Sie können auch versuchen, die Objektmaske als String zu setzen, der z.

brandService.setMask("mask[id,companyName,accountStatusId,email,hardwareCount,hardware,virtualGuestCount,VirtualGuest,nasNetworkStorage,nasNetworkStorageCount]"); 

Wie auch immer der sicherste Weg, dass die Informationen Ihrer Konten, um die Marke verbunden zu bekommen, um die Master-Benutzer jedes accout verwendet wird, ich das Konto Service bedeuten, verwendet wird; Selbst das Portal der Softlayer-Agenten verwendet das Hauptkonto, um mehr Informationen zu einem bestimmten Konto in Ihrer Marke zu erhalten.

Lassen Sie mich wissen, wenn Sie weitere Fragen haben

Grüße