Admin Tool

One of the problems facing any distributed system is starting up and tearing down a system. To solve this problem, the AdminTool framework was created. These tools allow a user to start Jicos components, on multiple machines, to form a system.

The AdminTool framework conforms to the Model-View-Controller pattern (MVC), "... a classical design pattern often used by applications that need the ability to maintain mulitple views of the same data. The MVC pattern hinges on a clean separation of objects into one of three categories: models for maintaining data, views for displaying all or a portion of the data, and controllers for handling events that effect the model or view(s)."*1

In the case of the AdminTool, the model and controller objects is the same - ConsoleImpl. The view is handled by the TuiConsole (text user interface) and, in the future, the GuiConsole.

Another component of the framework is a component called the Chameleon.*2  Since Java can run on many different platforms, there wasn't one procedure available to connect to a remote machine and start a process. Chameleon is an application that can be started when the machine boots (as a daemon or service) and listens for requests to start up a Jicos component.

Jicos Console diagram
Jicos Console diagram

Future work in this area will allow for monitoring and controlling the individual components. To support this, all components must implement the Administrable interface. The Administrable interface has extensions for each component (AdministrableHsp, AdministrableTaskServerMatlab, etc.), allowing for component specific methods. Currently, the only only method in the interface is shutdown().


Components


*1 eNode, Inc. Copyright © 2002. All Rights Reserved Retrieved on 1 Apr 2005: http://www.enode.com/x/markup/tutorial/mvc.html
*2 It was thus named because it originally was designed to change into the necessary Jicos service (Hsp, TaskServerMatlab, and so forth). However, it now just starts up a new JVM with the requested service and waits for another command.