Friday, March 25, 2011

Oh, no, another bug!!

More on that later. I like chronological blog entries.

First off, fellow RCOS member Tim Horton was kind enough to point out some errors in the licensing for INMP, and was kind enough to point me in the right direction of fixing them. The code is now properly licensed under GPLv2. Thanks, Tim!

Secondly, fellow RCOS member David Doria was kind enough to point out some problems in documentation of software. I updated the documentation for newest version of the software and also wrote a small Perl script which tests the user's machine to ensure it is properly set up to run INMP. The script detects missing modules and explains how to install them, then instructs how to start the software. Thanks for pointing out this documentation issue, David!

David's e-mail about this really got me thinking. I really want to package the software into a .deb/.rpm package to make installation simple. I'd also like some type of automated installation for any missing Perl modules on the user's system. Since I've never done anything like this before, this week was a lot of research as opposed to code development.

However, the bug in the title must now take the priority. There is a pretty big problem with the functions to propagate 'no shut' command to the proper interfaces. In hindsight, I should have realized this would happen when I wrote the original script for that, and am a bit embarrassed to admit I am only discovering it now. Nevertheless, I have a few ideas about how to fix it, and will likely post another entry in the next few days detailing my success or lack thereof.

That's it for now.

Friday, March 11, 2011

Live Testing!

So I am happy to report that the software survived it's first 'real-world' test, as I used it for my classwork on Thursday. I also thought of some more features to add to aid in it's use, particularly I will look at the ability to dismiss a specific tab to reduce clutter in labs which don't need all 11 devices. Also will make the tabs expand to fill the entire width of the client, because right now they are only 2-4 characters long, and when switching across multiple devices quickly this becomes a problem.

In other news, I would like to thank Tim Horton, both for the youtube upload of last week presentation which may found here and for helping me with some licensing issues in the code.

Sunday, March 6, 2011

"I need 15 more minutes." "What? You've had 11 hours and you need 15 more minutes?"

That was the scene at about 6:45 this morning, when everyone was getting ready to show off their work at Hackathon. I needed 15 more minutes to fix a bug I was working on.

So yes, I survived the 12 hour Hackathon event!! The updates to the repository are here. The work from Hackathon starts at r24 and continues all the way to r31!!! I committed often during the event so I would have a log of all the stuff I did to write about it here. So here's how it went, in order:

1) I started small to get my mood set. Deleted some old code that was no longer necessary, and added title bars to all the windows that say something meaningful.

2) Added scrollbars to the telnet windows. You can now scroll up and down to the history command I/O. Not sure how deep it goes, but it's pretty deep.

3) Added what I call the semi-dynamic sizing feature. Tk widgets don't always take kindly to being resized, such as when a user hits the maximized button. The best I can do is allow for user to input desired height and width, in characters, of the telnet windows when creating them.

4) Added a function to disconnect from devices. Because the save and restore scripts contain automated code to connect, do their thing, and disconnect, there can not be any active connections to the devices during that time.

5) Key bindings! I talked about this to the RCOS last Friday. Anytime now there is an 'OK' dialog box, you don't need to physically click the button. (You still can, though!!) Hitting the 'Enter' key on your keyboard accomplishes the same task.

6) Save the best for last. This feature is the breakthrough that sets INMP apart from any other software out there. Without a doubt, the most annoying thing about working with Cisco routers, especially here at RPI, is that router interfaces are shutdown by default. Especially here in the lab, after erasing a previous configuration and loading in your own, you need to physically type 'no shut' at each interface. Well, not any more. When saving configurations through the INMP, it automatically inserts a 'no shut' command into the saved file exactly where it's supposed to be. I.e, only to the interfaces that actually need to have 'no shut' issued to them.

So the software is now at the point where I do not have a problem telling people 'Go download this software and check it out.' I know between Friday and today, a couple people have expressed interest in using it. I will be doing full live testing of it this week in my laboratory work on Tuesday and Thursday, and I hope other Linux users in the Networking classes do so as well.

So overall, I would say the Hackathon was a huge success. Nice too to see that there was a very strong RCOS presence. I know I certainly made tremendous progress and hope the other students did as well. The host, Mike, hinted there may be another one before the end of the semester, I hope it becomes a reality.

Saturday, March 5, 2011

Fix Bugs, Get to Top of Observatory.

But seriously. The two bugs I blogged about on Thursday are mostly fixed. The issue with the same telnet session eating up multiple tabs is completely fixed, and the the program also now exits correctly when choosing File->Exit from the menu, but still doesn't when clicking the x-button.

Look for more detailed blog update after Hackathon tonight.

Thursday, March 3, 2011

Progress!

I am happy to report that I have made significant progress on the client. There are still a couple of bugs that I am working on, but I expect that they will be worked out very shortly. So for now, the client will connect to devices, and I have also added the core functionality from my backend scripts, including save, restoring, and initializing. The client is a little bit ugly right now, but fixes will come after I get the functionality bugs worked out.

The primary bug I am fixing is that the client does not always exit properly; that is to say, even though the window is closed, the client still seems to be running in the background. I am going to work a way to ensure that clicking that 'x' button on the client sends the proper exit signals to the program.

The second major bug is sometimes the client gets stuck sending the different telnet sessions to the tabs, and sometimes sends the same session to some multiple tabs. With some pointers from some guys in a Perl chatroom, the faulty lines of code have been identified, and I am working on a fix.

The hackathon is this Saturday, which is basically a 12 hour codefest. I will be working on this project the entire time, with the primary goal of fixing the above two mentioned bugs. After, I will work towards improving the looks of the client. I am hoping to make significant progress at that event, and will blog after, or perhaps during it.

I will also be giving my first presentation to the RCOS on this Friday, March 4th. The slides which I present will appear in my repository after my talk.