Citrix ADC SDX

SDK de .NET

Las API NITRO de NetScaler SDX 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 usar NITRO es establecer una sesión con el dispositivo NetScaler 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 NetScaler SDX con la dirección IP 10.102.31.16 mediante el protocolo HTTPS:

//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-->

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:

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

API de configuración

El protocolo NITRO se puede usar para configurar los recursos del dispositivo NetScaler 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 NetScaler) en el dispositivo NetScaler 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 de NetScaler denominada “ns_instance” en el dispositivo NetScaler SDX:

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

Recuperar detalles del recurso

Para recuperar las propiedades de un recurso en el dispositivo NetScaler 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:

//Retrieve the resource object from the NetScaler 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 NetScaler 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 NetScaler 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.
1.  Establezca el valor de las propiedades requeridas del recurso mediante el nombre de propiedad correspondiente.
    Nota: Estos valores se establecen localmente en el cliente. Los valores no se reflejan en el dispositivo hasta que se carga el objeto.
1.  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 NetScaler con el ID 123456a a "ns_instance_new":

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


### Eliminar 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.

En el siguiente código de ejemplo, se elimina una instancia de NetScaler con ID 1:

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 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:

-  **Salir.** 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:

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

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