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.
Cree 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:
//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: Utilice el objeto nitro_service en todas las operaciones 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 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.
Por ejemplo, el recurso de NetScaler tiene el paquete o espacio de nombres com.citrix.sdx.nitro.resource.config.ns.
Una clase de recursos proporciona API para realizar otras operaciones. Estas operaciones pueden consistir en crear un recurso, recuperar recursos y propiedades de recursos, actualizar un recurso, eliminar recursos y realizar operaciones masivas en los recursos.
Crear un recurso
Para crear un recurso (por ejemplo, una instancia de NetScaler) en el dispositivo SDX:
- 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.
- 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 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 SDX, haga lo siguiente:
- Recupere las configuraciones del dispositivo mediante el método get(). El resultado es un objeto de recurso.
- 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 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 NetScaler con el ID 123456a:
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);
<!--NeedCopy-->
Actualizar un recurso
Para actualizar las propiedades de un recurso existente en el dispositivo, haga lo siguiente:
- Establezca la propiedad id en el identificador del recurso que se va a actualizar.
- 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.
- 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);
<!--NeedCopy-->
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);
<!--NeedCopy-->
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: Configure el comportamiento requerido mientras establece 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 ADC 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 ADC appliances 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.
La clase com.citrix.sdx.nitro.exception.nitro_exception captura todas las excepciones en la ejecución de las API de NITRO. Para obtener información sobre la excepción, puede utilizar el método getErrorCode()
.
Para obtener una descripción más detallada de los códigos de error, consulte la referencia de la API disponible en la carpeta <NITRO_SDK_HOME>/doc
.