Did you have good time writing Java and Powershell programs discussed in last blogs (http://blogs.citrix.com/2011/12/07/nitro-unleash-the-power-using-powershell/). Question is whether the support is limited to these selective programming languages?? You know the answer, isn’t it
… NITRO APIs can be used in any of the scripting languages as far as you can do basic HTTP based programming. Most of the scripting languages today, provide built-in HTTP modules to simplify the scripting experience and it helps with NITRO as well. With scripting languages we do not have SDKs but you can simply build a module for NITRO and use the functions in your scripts.
Let us discuss a Perl based NITRO implementation which utilizes a Perl module having core methods nitro_pm. We will discuss the scripting aspect assuming you have the module with you. The module has simple functions defined as:
- ns_login
- ns_logout
- get_object
- get_stats
- print_object
- add_object
- add_bulk_object
- bind_object
- bind_bulk_object
- unbind_bulk_object
- modify_object
- delete_object
- delete_object_by_post
- delete_bulk_object
As you see with these functions you can do most of the day to day operation and let us now take a look at how you will use these functions in the script. We will do following simple tasks which put together the script:
- Login to NetScaler
- Adding LB vserver
- Getting LB vserver details
- Setting/Modifying LB vserver
- Removing LB vserver
- Logout from NetScaler
Let us go over step by step procedure on how we can accomplish this.
Step 1: Import relevant libraries
- use nitro;
- use Storable qw(dclone);
The “nitro” library provides functions for session creation/termination, dealing with LB vserver configuration, handling the response etc.
Step 2: Logging into the NetScaler and creating a session
Before you do any functional operation using NITRO API, must have a valid session established by performing login to the NetScaler system.
- $session = nitro::ns_login($nsip,$user,$pass);
The above code provides a NITRO session with NetScaler on given IP address and performs login with given username and password. You need to parse and handle the response to check for any error.
Step 3: Adding LB vserver
Once you have established valid session, it is very easy to start with specific LB vserver configuration.
- my %lbvserver_hash=();
- $lbvserver_hash->{name}=”lbvip_perl”;
- $lbvserver_hash->{servicetype}=”http”;
- $result = nitro::add_object($session,”lbvserver”,$lbvserver_hash);
We are creating a LB vserver hash and setting various properties in the hash. The “add_object” method adds the lbvserver on the session created.
Step 4: Getting LB vserver details
Show operation is straight forward and only requires single API call.
- $result1 = nitro::get_object($session,”lbvserver”);
This call returns you the complete structure for the LB vserver “lbvip1”. You can parse the result and get further data.
Step 5: Setting/Modifying LB vserver
LB vserver has several properties which you may want to change at runtime using the “modify_object” method.
- my %lbvserver_hash_modify=();
- $lbvserver_hash_modify->{name}=”lbvip_perl”;
- $lbvserver_hash_modify->{lbmethod}=”roundrobin”;
- $lbvserver_hash_modify->{persistencetype}=”SOURCEIP”;
- $result=nitro::modify_object($session,”lbvserver”,$lbvserver_hash_modify);
For setting the properties we define a LB vserver hash and set respective key->value pairs.
Step 6: Remove LB vserver
Let us delete the LB vserver configuration we have created in this example. It is again a simple operation with single API call to remove the configuration.
- $result=nitro::delete_object($session,”lbvserver”,”lbvip_perl”);
We are using the same session and calling the “delete_object” method for removing the LB vserver.
Step 7: Logging out of NetScaler
As usual logging out of the session is quite important and here is the API
- nitro::ns_logout($session);
With this you have ensured successful logout from the system. Be sure to parse the response and ensure a successful logout.
One Comment