Citrix ADC SDX 13.0

Java SDK

SDX NITRO APIs werden je nach Umfang und Zweck der APIs in System-APIs und Konfigurations-APIs kategorisiert. Sie können auch Probleme mit NITRO-Operationen beheben.

System-APIs

Der erste Schritt zur Verwendung von NITRO besteht darin, eine Sitzung mit der SDX-Appliance einzurichten und anschließend die Sitzung mithilfe der Anmeldeinformationen des Administrators zu authentifizieren.

Sie müssen ein Objekt der nitro_service-Klasse erstellen, indem Sie die IP-Adresse der Appliance und das Protokoll für die Verbindung mit der Appliance angeben (HTTP oder HTTPS). Anschließend verwenden Sie dieses Objekt und melden Sie sich bei der Appliance an, indem Sie den Benutzernamen und das Kennwort des Administrators angeben.

Hinweis: Sie müssen über ein Benutzerkonto auf dieser Appliance verfügen. Die Konfigurationsvorgänge, die Sie ausführen können, sind durch die Administratorrolle begrenzt, die Ihrem Konto zugewiesen ist.

Der folgende Beispielcode stellt mithilfe des HTTPS-Protokolls eine Verbindung zu einer SDX-Appliance mit der IP-Adresse 10.102.31.16 her:

``` pre codeblock //Specify the IP address of the appliance and service type nitro_service nitroservice = new nitro_service (“10.102.31.16”, “https”);

//Specify the login credentials nitroservice.login(“nsroot”, “verysecret”);


Hinweis: Sie müssen das
nitro_service-Objekt bei allen weiteren NITRO-Operationen auf der Appliance verwenden.

Um die Verbindung zur Appliance zu trennen, rufen Sie die logout () -Methode wie folgt auf:

``` pre codeblock
nitroservice.logout();
<!--NeedCopy-->

Konfigurations-APIs

Das NITRO-Protokoll kann verwendet werden, um Ressourcen der SDX-Appliance zu konfigurieren.

Die APIs zum Konfigurieren einer Ressource werden in Paketen oder Namespaces gruppiert, die das Format com.citrix.sdx.nitro.resource.config.<resource_type> haben. Jedes dieser Pakete oder Namespaces enthält eine Klasse mit dem Namen <resource_type>, die die APIs zur Konfiguration der Ressource bereitstellt.

Beispielsweise hat die NetScaler-Ressource das Paket oder den Namespace com.citrix.sdx.nitro.resource.config.ns.

Eine Ressourcenklasse stellt APIs bereit, um andere Vorgänge auszuführen, z. B. das Erstellen einer Ressource, das Abrufen von Ressourcendetails und -statistiken, das Aktualisieren einer Ressource, das Löschen von Ressourcen und das Ausführen von Massenvorgängen für Ressourcen.

Erstellen einer Ressource

Gehen Sie folgendermaßen vor, um eine neue Ressource (z. B. eine Citrix ADC-Instanz) auf der SDX-Appliance zu erstellen:

  1. Legen Sie den Wert für die erforderlichen Eigenschaften der Ressource mithilfe des entsprechenden Eigenschaftsnamens fest. Das Ergebnis ist ein Ressourcenobjekt, das die für die Ressource erforderlichen Details enthält. Hinweis: Diese Werte werden lokal auf dem Client festgelegt. Die Werte werden erst nach dem Upload des Objekts auf der Appliance wiedergegeben.
  2. Laden Sie das Ressourcenobjekt mithilfe der statischen add () -Methode auf die Appliance hoch.

Der folgende Beispielcode erstellt eine Citrix ADC-Instanz namens “ns_instance” auf der SDX-Appliance:

``` pre codeblock ns newns = new ns();

//Set the properties of the NetScaler locally newns.set_name(“ns_instance”); newns.set_ip_address(“10.70.136.5”); newns.set_netmask(“255.255.255.0”); newns.set_gateway(“10.70.136.1”); newns.set_image_name(“nsvpx-9.3.45_nc.xva”); newns.set_profile_name(“ns_nsroot_profile”); newns.set_vm_memory_total(new Double(2048)); newns.set_throughput(new Double(1000)); newns.set_pps(new Double(1000000)); newns.set_license(“Standard”); newns.set_username(“admin”); newns.set_password(“admin”);

int number_of_interfaces = 2; network_interface[] interface_array = new network_interface[number_of_interfaces];

//Adding 10/1 interface_array[0] = new network_interface(); interface_array[0].set_port_name(“10/1”);

//Adding 10/2 interface_array[1] = new network_interface(); interface_array[1].set_port_name(“10/2”);

newns.set_network_interfaces(interface_array);

//Upload the Citrix ADC instance ns result = ns.add(nitroservice, newns);


### Ressourcendetails abrufen

Gehen Sie folgendermaßen vor, um die Eigenschaften einer Ressource auf der SDX-Appliance abzurufen:

1.  Rufen Sie die Konfigurationen von der Appliance mithilfe der get () -Methode ab. Das Ergebnis ist ein Ressourcenobjekt.
2.  Extrahieren Sie die erforderliche Eigenschaft aus dem Objekt mithilfe des entsprechenden Eigenschaftsnamens.

Der folgende Beispielcode ruft die Details aller NetScaler-Ressourcen ab:

``` pre codeblock
//Retrieve the resource object from the SDX appliance
ns[] returned_ns = ns.get(nitroservice);

//Extract the properties of the resource from the object
System.out.println(returned_ns[i].get_ip_address());
System.out.println(returned_ns[i].get_netmask());
<!--NeedCopy-->

Ressourcenstatistiken abrufen

Eine SDX-Appliance sammelt Statistiken über die Nutzung ihrer Funktionen. Sie können diese Statistiken mit NITRO abrufen.

Der folgende Beispielcode ruft Statistiken einer Citrix ADC-Instanz mit der ID 123456a ab:

``` pre codeblock ns obj = new ns(); obj.set_id(“123456a”); ns stats = ns.get(nitroservice, obj); System.out.println(“CPU Usage:” + stats.get_ns_cpu_usage()); System.out.println(“Memory Usage:” + stats.get_ns_memory_usage()); System.out.println(“Request rate/sec:” +stats.get_http_req());


### Ressource aktualisieren

Gehen Sie folgendermaßen vor, um die Eigenschaften einer vorhandenen Ressource auf der Appliance zu aktualisieren:

1.  Legen Sie die Eigenschaft id auf die ID der Ressource fest, die aktualisiert werden soll.
2.  Legen Sie den Wert für die erforderlichen Eigenschaften der Ressource mithilfe des entsprechenden Eigenschaftsnamens fest. Das Ergebnis ist ein Ressourcenobjekt.
    Hinweis: Diese Werte werden lokal auf dem Client festgelegt. Die Werte werden erst nach dem Upload des Objekts auf der Appliance wiedergegeben.
3.  Laden Sie das Ressourcenobjekt über die update()-Methode auf die Appliance hoch.

Der folgende Beispielcode aktualisiert den Namen der Citrix ADC-Instanz mit der ID 123456a in 'ns_instance_new':

``` pre codeblock
ns update_obj = new ns();

//Set the ID of the NetScaler to be updated
update_obj.set_id("123456a");

//Get existing NetScaler details
update_obj = ns.get(nitroservice, update_obj);

//Update the name of the NetScaler to "ns_instance_new" locally
update_obj.set_name("ns_instance_new");

//Upload the updated NetScaler details
ns result = ns.update(nitroservice, update_obj);
<!--NeedCopy-->

Löschen einer Ressource

Um eine vorhandene Ressource zu löschen, rufen Sie die statische Methode delete () für die Ressourcenklasse auf, indem Sie die ID der zu entfernenden Ressource als Argument übergeben.

Im folgenden Beispielcode wird eine Citrix ADC-Instanz mit der ID 1 gelöscht:

``` pre codeblock ns obj = new ns(); obj.set_id(“123456a”); ns.delete(nitroservice, obj);


### Massenvorgänge

Sie können mehrere Ressourcen gleichzeitig abfragen oder ändern und so den Netzwerkverkehr minimieren. Beispielsweise können Sie mehrere Citrix ADC SDX-Appliances in demselben Vorgang hinzufügen.

Jede Ressourcenklasse verfügt über Methoden, die ein Array von Ressourcen zum Hinzufügen, Aktualisieren und Entfernen von Ressourcen verwenden. Um einen Massenvorgang auszuführen, geben Sie die Details der einzelnen Vorgänge lokal an und senden Sie die Details dann gleichzeitig an den Server.

Um den Fehler einiger Operationen innerhalb des Massenvorgangs zu berücksichtigen, können Sie mit NITRO eines der folgenden Verhaltensweisen konfigurieren:

-  **Beenden.** Wenn der erste Fehler auftritt, stoppt die Ausführung. Die Befehle, die vor dem Fehler ausgeführt wurden, werden festgeschrieben.
-  **Weiter.** Alle Befehle in der Liste werden ausgeführt, auch wenn einige Befehle fehlschlagen.

Hinweis: Sie müssen das erforderliche Verhalten beim Herstellen einer Verbindung mit der Appliance konfigurieren, indem Sie den
onerror param in der
nitro_service()-Methode festlegen.

Der folgende Beispielcode fügt zwei NetScalers in einem Vorgang hinzu:

``` pre codeblock
ns[] newns = new ns[2];

//Specify details of first NetScaler
newns[0] = new ns();
newns[0].set_name("ns_instance1");
newns[0].set_ip_address("10.70.136.5");
newns[0].set_netmask("255.255.255.0");
newns[0].set_gateway("10.70.136.1");
...
...
...

//Specify details of second NetScaler
newns[1] = new ns();
newns[1].set_name("ns_instance2");
newns[1].set_ip_address("10.70.136.8");
newns[1].set_netmask("255.255.255.0");
newns[1].set_gateway("10.70.136.1");
...
...

//upload the details of the NetScalers to the NITRO server
ns[] result = ns.add(nitroservice, newns);
<!--NeedCopy-->

Ausnahmebehandlung

Das Fehlercode-Feld gibt den Status des Vorgangs an.

  • Ein Fehlercode von 0 gibt an, dass der Vorgang erfolgreich ist.
  • Ein Fehlercode ungleich Null zeigt einen Fehler bei der Verarbeitung der NITRO-Anforderung an.

Das Fehlermeldungsfeld bietet eine kurze Erklärung und die Art des Fehlers.

Alle Ausnahmen bei der Ausführung von NITRO-APIs werden von der Klasse com.citrix.sdx.nitro.exception.nitro_exception abgefangen. Um Informationen über die Ausnahme zu erhalten, können Sie die getErrorCode () -Methode verwenden.

Eine ausführlichere Beschreibung der Fehlercodes finden Sie in der API-Referenz im Ordner <NITRO_SDK_HOME>/doc.

Java SDK