It’s amazing how much you see your master’s thesis guide in your behaviour long after you graduate.. .Perhaps even more amazing is the fact that you see that despite mostly trying to avoid him during your graduation years…. Or perhaps, even more amazing is how big of a fight you had over what what issue(in this case global vs local) and how exactly that’s what makes you remember him/her..

My reason for OSS

I have spent close to 6 hours today trying to figure out why Netscaler nitro api’s login won’t work… Finally someone from irc pointed out this blog and i realized i was sending the credentials without the “object ” part… Damn… you Documentations…This is one of the main reasons i am a huge supporter of open-source… Now the documentation did not say not to send object as part of data, neither did it say it needs to be sent.. From the way it was given and my pythonized brain, i just assumed it to be a dictionary object and “object ” just being a variable….

If i had access to the source, i would have read it instead… agreed familiarity with the language matters, but …

Again, NetScaler proves they don’t have a technical writing department or it sucks. Take a look at this.
The part where they tell you how to use the configuration utility has more options. i am sure they assumed it’s common knowledge for shell experts, but then, they don’t provide any POSIX standard shell, but a customized one. (atleast that’s how it looks to me.) So WTF? why can’t you guys document??

Update 05-Jan-2012:
Oh they definitely need some writing skills.. they are making a lot of assumptions about the reader.. As far as the nitro api goes it seems servicegroup and service interchangeable when creating a binding…F.U..F.U..

And if i try to pass in the servicegroupname instead of servicename it errors out saying “Operation not permitted”. That’s the problem, but the fact that if i login to the LB and say bind lbvserver that works fine for the same values.. Clearly netscaler is doing some magic behind the scenes.. i.e: creating a default service or something like that when i run the bind command from the shell…
I understand why these were designed this way.. nitro api is just too much work to do all of this, and also a security risk… But the real wtf is not mentioning it in the Nitro documentation or may be i should look for different Nitro documentation than Getting started one??

Update 12-01-2012:
And WTF with capitalizing some variable letters when throwing mandatory arguments error?? trying to mislead the developer?? or just you don’t care about how the message looks to the developer????????

Boastless, shameless, Just neutral Self-Plug: There’s an existing nsnitro repo i forked it here.