NetScaler SDX

SDK de .NET

Las API de SDX NITRO se clasifican según el alcance y el propósito de las API en API del sistema y API de configuración. También puede solucionar los problemas de las operaciones de NITRO.

APIs del sistema

El primer paso para utilizar NITRO es establecer una sesión con el dispositivo SDX y, a continuación, autenticar la sesión mediante las credenciales del administrador.

Debe crear un objeto de la clase nitro_service especificando la dirección IP del dispositivo y el protocolo para conectarse al dispositivo (HTTP o HTTPS). A continuación, utilice este objeto e inicie sesión en el dispositivo especificando el nombre de usuario y la contraseña del administrador.

Nota: Debe tener una cuenta de usuario en ese dispositivo. Las operaciones de configuración que puede realizar están limitadas por la función administrativa asignada a su cuenta.

El siguiente código de ejemplo se conecta a un dispositivo SDX con la dirección IP 10.102.31.16 mediante el protocolo HTTPS:

``` 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”);


Nota: Debe usar el objeto
nitro_service en todas las operaciones de NITRO posteriores en el dispositivo.

Para desconectarse del dispositivo, invoque el método logout() de la siguiente manera:

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

API de configuración

El protocolo NITRO se puede usar para configurar los recursos del dispositivo SDX.

Las API para configurar un recurso se agrupan en paquetes o espacios de nombres que tienen el formato com.citrix.sdx.nitro.resource.config.<resource_type>. Cada uno de estos paquetes o espacios de nombres contiene una clase llamada <resource_type> que proporciona las API para configurar el recurso.

Por ejemplo, el recurso de NetScaler tiene el paquete o espacio de nombres com.citrix.sdx.nitro.resource.config.ns.

Una clase de recurso proporciona API para realizar otras operaciones, como crear un recurso, recuperar recursos y propiedades de recursos, actualizar un recurso, eliminar recursos y realizar operaciones masivas en los recursos.

Creación de un recurso

Para crear un recurso nuevo (por ejemplo, una instancia de Citrix ADC) en el dispositivo SDX:

  1. Establezca el valor de las propiedades requeridas del recurso mediante el nombre de propiedad correspondiente. El resultado es un objeto de recurso que contiene los detalles requeridos para el recurso. Nota: Estos valores se establecen localmente en el cliente. Los valores no se reflejan en el dispositivo hasta que se carga el objeto.
  2. Cargue el objeto de recurso en el dispositivo mediante el método add() estático.

El siguiente código de ejemplo crea una instancia Citrix ADC denominada “ns_instance” en el dispositivo SDX:

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

//Set the properties of the NetScaler locally newns.name = “ns_instance”; newns.ip_address = “10.70.136.5”; newns.netmask = “255.255.255.0”; newns.gateway = “10.70.136.1”; newns.image_name = “nsvpx-9.3.45_nc.xva”; newns.profile_name = “ns_nsroot_profile”; newns.vm_memory_total = 2048; newns.throughput = 1000; newns.pps = 1000000; newns.license = “Standard”; newns.username = “admin”; newns.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].port_name = “10/1”;

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

newns.network_interfaces = interface_array;

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


### Recuperar detalles del recurso

Para recuperar las propiedades de un recurso en el dispositivo SDX, haga lo siguiente:

1.  Recupere las configuraciones del dispositivo mediante el método get(). El resultado es un objeto de recurso.
2.  Extraiga la propiedad requerida del objeto mediante el nombre de propiedad correspondiente.

El siguiente código de ejemplo recupera los detalles de todos los recursos de NetScaler:

``` 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
Console.WriteLine(returned_ns[i].ip_address);
Console.WriteLine(returned_ns[i].netmask);
<!--NeedCopy-->

Recuperar estadísticas de recursos

Un dispositivo SDX recopila estadísticas sobre el uso de sus funciones. Puede recuperar estas estadísticas mediante NITRO.

El siguiente código de ejemplo recupera las estadísticas de una instancia de Citrix ADC con ID 123456a:

``` pre codeblock ns obj = new ns(); obj.id = “123456a”; ns stats = ns.get(nitroservice, obj); Console.WriteLine(“CPU Usage:” + stats.ns_cpu_usage); Console.WriteLine(“Memory Usage:” + stats.ns_memory_usage); Console.WriteLine(“Request rate/sec:” +stats.http_req);


### Actualización de un recurso

Para actualizar las propiedades de un recurso existente en el dispositivo, haga lo siguiente:

1.  Establezca la propiedad id en el identificador del recurso que se va a actualizar.
2.  Establezca el valor de las propiedades requeridas del recurso mediante el nombre de propiedad correspondiente. El resultado es un objeto de recurso.
    Nota: Estos valores se establecen localmente en el cliente. Los valores no se reflejan en el dispositivo hasta que se carga el objeto.
3.  Cargue el objeto de recurso en el dispositivo mediante el método update().

El siguiente código de ejemplo actualiza el nombre de la instancia de Citrix ADC con el ID 123456a a "ns_instance_new":

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

//Set the ID of the NetScaler to be updated
update_obj.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.name = "ns_instance_new";

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

Eliminación de un recurso

Para eliminar un recurso existente, invoque el método estático delete() en la clase de recurso, pasando el ID del recurso que se va a quitar, como argumento.

El siguiente código de ejemplo elimina una instancia de Citrix ADC con ID 1:

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


### Operaciones a granel

Puede consultar o cambiar varios recursos simultáneamente y, por lo tanto, minimizar el tráfico de red. Por ejemplo, puede agregar varios dispositivos NetScaler SDX en la misma operación.

Cada clase de recurso tiene métodos que toman una serie de recursos para agregar, actualizar y eliminar recursos. Para realizar una operación masiva, especifique los detalles de cada operación localmente y, a continuación, envíe los detalles de una vez al servidor.

Para tener en cuenta el error de algunas operaciones dentro de la operación masiva, NITRO le permite configurar uno de los siguientes comportamientos:

-  **Salida.** Cuando se encuentra el primer error, la ejecución se detiene. Se confirman los comandos que se ejecutaron antes del error.
-  **Continúe.** Todos los comandos de la lista se ejecutan incluso si algunos comandos fallan.

Nota: Debe configurar el comportamiento requerido al establecer una conexión con el dispositivo, estableciendo el parámetro
onerror en el método
nitro_service().

El siguiente código de ejemplo agrega dos dispositivos NetScaler en una operación:

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

//Specify details of first NetScaler
newns[0] = new ns();
newns[0].name = "ns_instance1";
newns[0].ip_address = "10.70.136.5";
newns[0].netmask = "255.255.255.0";
newns[0].gateway = "10.70.136.1";
...
...

//Specify details of second NetScaler
newns[1] = new ns();
newns[1].name = "ns_instance2";
newns[1].ip_address = "10.70.136.8";
newns[1].netmask = "255.255.255.0";
newns[1].gateway = "10.70.136.1";
...
...

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

Gestión de excepciones

El campo errorcode indica el estado de la operación.

  • Un código de error de 0 indica que la operación se ha realizado correctamente.
  • Un código de error distinto de cero indica un error en el procesamiento de la solicitud NITRO.

El campo de mensaje de error proporciona una breve explicación y la naturaleza del error.

Todas las excepciones en la ejecución de las API de NITRO son capturadas por la clase com.citrix.sdx.nitro.exception.nitro_exception. Para obtener información sobre la excepción, puede usar el método getErrorCode().

Para obtener una descripción más detallada de los códigos de error, consulte la referencia API disponible en la carpeta <NITRO_SDK_HOME>/doc.

SDK de .NET