wiki:GeniDesktop_gec23_report

GENI Desktop Project Status Report

Period: Post GEC 23 Report

I. Major accomplishments

The following highlights our accomplishments during the last reporting period.

A. Milestones achieved

  • Enhanced the set of scriptable resource management, instrumentation, and monitoring available to experimenters and other tools.

  • Enabled integration of the GENI Desktop with other experimenter tools.
  • Created documentation and tutorial materials to reflect this latest version of the GENI Desktop.

B. Deliverables made

  • We designed and implemented a GENI Desktop Command Line Interface (gdcli) that enables users to write scripts that control, manage, and measure the performance of their slices through the GENI Desktop.
  • We demonstrated how the new gdcli can be used by other experimenter tools to integrate with the GENI Desktop.
  • We developed online documentation for the new gdcli interface and gave a tutorial entitled "Monitoring and Controlling Experiments with GENI Desktop Scripts and Modules" at the GEC 23 conference.

II. Description of work performed during last quarter

The following provides a description of the progress made during the last reporting period.

A. Activities and findings

Our activities this last reporting period have been primarily focused on the design, implementation, and deployment of a GENI Desktop Command Line Interface (gdcli) that enables experimenters and tool developers to integrate the GENI Desktop into their experiments and tools. We also presented a tutorial at the GEC 23 conference that showed attendees how they could integrate the GENI Desktop into their experiments.

The GENI Desktop greatly simplifies the task of instrumenting and monitoring a users' experiment (slice). However, users could only access the GENI Desktop via a web interface. In other words, there was not programmatic way for experimenters or tool developers to leverage the GENI Desktop functionality.

To address this need we designed a new interface to the GENI Desktop that could be used to programatically upload files, run commands, download measurement graphs, etc --- functions previously only possible via the GENI Desktop web interface. In particular, we developed an application that runs on Linux (or other Unix-based systems), Mac, and Window called the gdcli program that can be used to interact with the GENI Desktop. The gdcli program can be used to:

  • Upload files to a select set of nodes
  • Run a command on a select set of nodes
  • Download a traffic measurement graph (as PNG or CSV) from a select set of nodes
  • Download a normal file from a select set of nodes
  • Get a list of slices
  • Check the status of a slice
  • Get the topology of a slice
  • Validate the setup of a slice
  • List the nodes in a slice
  • List the links in a slice

The gdcli program can be called from any scripting language (e.g., python, perl, sh (bash), .BAT files, etc). As a result, users are able to write programs in their favorite scripting language that make calls to the GENI Desktop to upload/download files, download measurement graphs, run commands, etc.

There were several challenges that we had to address while implementing the gdcli scripting interface. First, we needed a way to make calls to the GENI Desktop server (e.g., to download a traffic graph, or run a command). To solve this problem we enhanced the GENI Desktop server to support HTTP posts that included parameters to the request specifying, for example, the list of traffic graphs to be downloaded (i.e., the nodes/links names and the types of graphs desired). We implemented a python backend server specifically designed to process the request, perform the action, and return the results. The python backend shares access with the previous GENI Desktop PHP code to the databases and files used by the GENI Desktop, thereby ensuring that the results returned by the gdcli are the same information as would be seen in the GENI Desktop web interface.

A second challenge was securing the access to, and communication with, the new python backend server. To ensure communication is secure, all communication occurs over a secure connection using https. The problem of authorization requires not only that the user authenticate themselves to the server, but that the server obtain a "speaks-for" certificate to act on behalf of the user. Because the existing speaks-for generation tools are designed for interactive web use, not scripting, we decided to require that users first authorize a speaks-for using the existing GENI Desktop web interface which can then be stored and used by the GENI Desktop (and our new backend server) until the speaks-for expires. However, this does not solve the authorization problem. To ensure the users has the right to issue commands to our python backend server, the web interface of the GENI Desktop also creates a secret key (say at the same time the user authorizes the speaks for) that the user must store on their local machine. The secret key is used when communicating with the python backend server to prove that the user has the right to invoke the requested operations on the GENI Desktop. In that sense, users can think of the gdcli secret key like an ssh key that must be present on their local machine in order to access the service.

A third issue involved handling the results/output of a gdcli request. The gdcli tool provide two mechanisms for handling the output from a request. The first, and most simple mechanism, concatenates all the output files/graphs and prints them to standard output, allowing users to redirect output to other programs or tools. The second way gdcli handles output is to deposit each graph, downloaded file, or output from a run command into a different file on the local machine. Files are automatically assigned names that describe their content (based on the slice, the aggregate, the node or link, and the type of graph). Because the naming convention is known to experimenters, they can easily write scripts that know what filenames to look for, and then feed those files to the appropriate program for processing (e.g., copying traffic graphs into a web directory to create a user-defined traffic mashup view).

B. Project participants

The following individuals are involved with the project in one way or another:

  • Jim Griffioen - Project PI
  • Zongming Fei - Project Co-PI
  • Hussamuddin Nasir - Technician/Programmer
  • Charles Carpenter - Technician/Programmer
  • Xiongqi Wu - Ph.D. Student
  • Jeremy Reed - Ph.D. Student

C. Publications (individual and organizational)

D. Outreach activities

  • We presented the GENI Desktop during the Introduction to GENI Instrumentation & Measurement Tools portion of the Getting Started with GENI tutorial at GEC 23.
  • We participated in the demo session at GEC 23, demonstrating the new gdcli interface
  • We gave a tutorial entitled "Monitoring and Controlling Experiments with GENI Desktop Scripts and Modules" at the GEC 23 conference.
  • We developed and posted online documentation for the new gdcli interface

E. Collaborations

  • Most of our collaborations have been between the GPO Portal team and the aggregate teams at Utah and RENCI.

F. Other Contributions

Last modified 6 years ago Last modified on 08/11/15 13:45:04