NetScaler 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.

Erstellen Sie ein Objekt der Klasse nitro_service, 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:

//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");
<!--NeedCopy-->

Hinweis: Verwenden Sie das nitro_service-Objekt in allen weiteren NITRO-Vorgängen auf der Appliance.

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

nitroservice.logout();
<!--NeedCopy-->

Konfigurations-APIs

Das NITRO-Protokoll kann verwendet werden, um die 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.. Jedes dieser Pakete oder Namensräume enthält eine Klasse mit dem Namen das stellt die APIs zur Konfiguration der Ressource bereit.

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

Eine Ressourcenklasse stellt APIs bereit, um viele andere Vorgänge durchzuführen. Diese Vorgänge können 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 sein.

Erstellen einer Ressource

Gehen Sie wie folgt vor, um eine Ressource (z. B. eine NetScaler-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 erst in der Appliance wiedergegeben, wenn das Objekt hochgeladen wurde.
  2. Laden Sie das Ressourcenobjekt mithilfe der statischen add () -Methode auf die Appliance hoch.

Der folgende Beispielcode erstellt eine NetScaler-Instanz mit dem Namen „ns_instance“ auf der SDX-Appliance:

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 NetScaler instance
ns result = ns.add(nitroservice, newns);
<!--NeedCopy-->

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:

//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 die Statistiken einer NetScaler-Instanz mit der ID 123456a ab:

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

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 erst in der Appliance wiedergegeben, wenn das Objekt hochgeladen wurde.
  3. Laden Sie das Ressourcenobjekt mithilfe der update () -Methode auf die Appliance hoch.

Der folgende Beispielcode aktualisiert den Namen der NetScaler-Instanz mit der ID 123456a auf ‘ns_instance_new’:

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 NetScaler-Instanz mit ID 1:

ns obj = new ns();
obj.set_id("123456a");
ns.delete(nitroservice, obj);
<!--NeedCopy-->

Bulk-Vorgänge

Sie können mehrere Ressourcen gleichzeitig abfragen oder ändern und so den Netzwerkverkehr minimieren. Sie können beispielsweise mehrere NetScaler SDX-Appliances in derselben Operation 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:

  • Beenden. 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: Konfigurieren Sie das erforderliche Verhalten beim Herstellen einer Verbindung mit der Appliance, indem Sie den onerror Parameter in der nitro_service () -Methode festlegen.

Der folgende Beispielcode fügt zwei ADC-Appliances in einem Arbeitsgang hinzu:

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.

Die com.citrix.sdx.nitro.exception.nitro_exception Klasse fängt alle Ausnahmen bei der Ausführung von NITRO-APIs ab. Um Informationen über die Ausnahme zu erhalten, können Sie die Methode getErrorCode() verwenden.

Eine detailliertere Beschreibung der Fehlercodes finden Sie in der API-Referenz, die im Ordner <NITRO_SDK_HOME>/doc verfügbar ist.

SDK