This post is a demonstration of the client I created recently that utilizes the work I've done in lower level libraries to connect to a Globus server. Unlike before, the user had to know explicitly know what arguments to pass to a job and change every property manually. For RFT, they had to know the file locations by heart and type out the path using the phone's keypad (not fun) - so I created a user friendly interface that allows the phone to access a space (as decided by the server) which allows it to submit jobs saved remotely and transfer files using a file browser-like UI. I will demonstrate what I can below using screenshots of my client in action.
The first thing you will see after the title is the server selection screen. Here you can add/delete Globus servers and select which one you would like to connect to. You can connect to multiple servers and switch between their views but I'm not going to demonstrate this since it would take far too long when using screenshots (uploading files here or posting to this blog makes me go crazy, it's very user unfriendly! I won't even get started on how much it fills me with Finnish rage when I have to use it! Arghhhh!)
Server screen (with our single server, which we select of course):
Once you connect to at least one server you will see the main menu screen (this menu pops up if you select options from the main menu, there's just that text on the screen behind it and an exit button on the right):
From here, I will demonstrate the remote file browsing on the shared space of my Globus server that is running inside my FC9 virtual machine. Since you can't see me browse, I will go directly into this folder called text/:
This is the contents of the folder:
From here, I want to see the contents of file named 'readme.txt':
And here is what the file contains (it's a readme file for a CSL toolchain (GCCE) for Symbian C++):
I'll click back to the root shared space. I'm going to show remote job submission using remote job descriptions here by submitting the file called 'simple-stage-job.rsl'. It's very simple, it just echoes a string to a file using the "echo" command and pipes it into a file on my Linux desktop:
... and here I click "Submit Job":
It successfully creates a managed job resource and displays the information in relation to it such as the address and job/resource ID:
Now, I'll go back to the main menu and select "View Jobs" - this screen lets me view what jobs I have submitted through the client. Note the ID of the job in this screen is the same as the resource ID the server provided with us. It's not the best way to identify jobs but there's no mechanism for naming jobs in Globus as far as I know (maybe you can define a resource ID as a string but it's not a good idea when dealing with possible collissions)
I want to see the status of this job:
... and this is the result. Job state is "Done", exit code is 0, local user ID is 'jmangs', and the subjectname is my phone's certificate, and the holding state is false.
I can then delete the job from the server and my phone using the same screen. Next, I'm going to transfer a file locally:
We're going to copy blankfile, so we mark it as source:
And since we're only doing a local copy, I want to use the folder called text/ (remote works too, I'm not showing it here, it simply involves setting the destination after switching views to a different server):
We mark the directory text/ as our destination:
... and transfer our files:
If the transfer is correct and starts, the phone will inform us of this:
This is the view of text/ after RFT does its stuff (it's somewhat slow inside my VM for some reason):
I haven't demonstrated everything that I'm able to do from a mobile phone here but it gives a good idea of what is possible. Basically the client above is a higher level implementation where the user doesn't need to know anything about writing SOAP stubs, client code, or dealing with negotiating a TLS connection (aside from a user certificate). Other features I have are multiple servers, switching between views, and the ability to delete files. I may consider adding the ability to save files to the phone locally if it proves useful; most of the libraries I have created in the previous weeks let me do this fairly quickly. Also what is shown above is not the limit of what you can do with the libraries I've created; it just demonstrates a user friendly (more user friendly I guess) way of using the mobile phone. In another client I had the capability to explicitly define what executable to run and what arguments to pass it while here I just allow the user to take a remote file and submit it as a job. I may also add further options to RFT as needed; here they are just using the defaults (ie, not defined -> server uses defaults)
Hopefully that gives a good, initial idea of what my work here entails. The client shown is fairly easy to understand in relation to the underlying concepts you have to deal with when working with a Grid. The documentation provided by Globus is sub-par at best and some of it is even plain wrong/contradictory in some cases. It's been fun, I'm going to spend this week to try to accurately document my source code in case it's ever used again. I don't think anyone has successfully created a mobile client that can interact with Globus. I'm fairly sure someone attempted to implement WS-ResourceProperties in Java ME before but gave up; and that was about 2 years ago. I managed to get that implemented in a week and a half so it wasn't too bad. Now I've basically implemented the WS-ResourceProperties standards and most of the others like WS-Trust, WS-Addressing, WS-ResourceLifetime, and so on.
Anyways, enough blabbering about. I'm going to get some more work done before I have to enjoy my amazing 19 hour journey back home!