Citrix ADC SDX

SDK

SDX NITRO-APIs werden je nach Umfang und Zweck der APIs in System-APIs und Konfigurations-APIs unterteilt. Sie können auch NITRO-Vorgänge beheben.

System-APIs

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

Sie müssen ein Objekt der Klasse nitro_service erstellen, indem Sie die IP-Adresse der Appliance und das Protokoll für die Verbindung mit der Appliance (HTTP oder HTTPS) angeben. Anschließend verwenden Sie dieses Objekt und melden 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 Ihrem Konto zugewiesene Administratorrolle begrenzt.

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 in allen weiteren NITRO-Vorgängen 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 sind in Pakete oder Namensräume gruppiert, die das Format com.citrix.sdx.nitro.resource.config haben. <resource_type>. Jedes dieser Pakete oder Namespaces enthält eine Klasse mit dem Namen<resource_type>, die die APIs zur Konfiguration der Ressource bereitstellt.

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

Eine Ressourcenklasse stellt APIs bereit, um andere Vorgänge wie das Erstellen einer Ressource, das Abrufen von Ressourcendetails und Statistiken, das Aktualisieren einer Ressource, das Löschen von Ressourcen und das Durchführen von Massenvorgängen mit Ressourcen durchzuführen.

Erstellen einer Ressource

Gehen Sie wie folgt 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 fest, indem Sie den entsprechenden Eigenschaftsnamen verwenden. 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 nicht in der Appliance wiedergegeben, bis das Objekt hochgeladen wurde.
  2. Laden Sie das Ressourcenobjekt mithilfe der statischen add () -Methode auf die Appliance hoch.

Der folgende Beispielcode erstellt eine Citrix ADC-Instanz mit dem Namen “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 werden abgerufen

Gehen Sie wie folgt vor, um die Eigenschaften einer Ressource auf der SDX-Appliance abzurufen:

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

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


### Aktualisieren einer Ressource

Gehen Sie wie folgt vor, um die Eigenschaften einer vorhandenen Ressource auf der Appliance zu aktualisieren:

1.  Setzt die id -Eigenschaft auf die ID der zu aktualisierenden Ressource.
2.  Legen Sie den Wert für die erforderlichen Eigenschaften der Ressource fest, indem Sie den entsprechenden Eigenschaftsnamen verwenden. Das Ergebnis ist ein Ressourcenobjekt.
    Hinweis: Diese Werte werden lokal auf dem Client festgelegt. Die Werte werden nicht in der Appliance wiedergegeben, bis das Objekt hochgeladen wurde.
3.  Laden Sie das Ressourcenobjekt mithilfe der update () -Methode auf die Appliance hoch.

Der folgende Beispielcode aktualisiert den Namen der Citrix ADC-Instanz mit der ID 123456a auf '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-->

Eine Ressource löschen

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.

Der folgende Beispielcode löscht eine Citrix ADC-Instanz mit ID 1:

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


### Bulk-Vorgänge

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

Jede Ressourcenklasse verfügt über Methoden, die ein Array von Ressourcen zum Hinzufügen, Aktualisieren und Entfernen von Ressourcen benötigen. Um einen Massenvorgang durchzuführen, geben Sie die Details jedes Vorgangs lokal an und senden Sie die Details dann gleichzeitig an den Server.

Um den Ausfall einiger Vorgänge innerhalb des Bulk-Vorgangs zu berücksichtigen, können Sie mit NITRO eines der folgenden Verhaltensweisen konfigurieren:

-  **Ausgang.** Wenn der erste Fehler auftritt, stoppt die Ausführung. Die Befehle, die vor dem Fehler ausgeführt wurden, werden festgeschrieben.
-  **Fahren Sie fort.** 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-Parameter in der
nitro_service () -Methode festlegen.

Der folgende Beispielcode fügt zwei NetScaler 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-->

Behandlung von Ausnahmen

Das Feld errorcode zeigt den Status des Vorgangs an.

  • Ein Fehlercode von 0 zeigt an, dass der Vorgang erfolgreich war.
  • Ein Fehlercode ungleich Null weist auf einen Fehler bei der Verarbeitung der NITRO-Anforderung hin.

Das Feld für die Fehlermeldung enthält 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 detailliertere Beschreibung der Fehlercodes finden Sie in der API-Referenz, die im <NITRO_SDK_HOME>Ordner /doc verfügbar ist.

SDK