| 1 | [[PageOutline]] |
| 2 | |
| 3 | = GENI Desktop Project Status Report = |
| 4 | |
| 5 | Period: Post GEC 23 Report |
| 6 | |
| 7 | == I. Major accomplishments == |
| 8 | |
| 9 | The following highlights our accomplishments during the last reporting period. |
| 10 | |
| 11 | === A. Milestones achieved === |
| 12 | |
| 13 | * Enhanced the set of scriptable resource management, instrumentation, and monitoring available to experimenters and other tools. |
| 14 | |
| 15 | * Enabled integration of the GENI Desktop with other experimenter tools. |
| 16 | |
| 17 | * Created documentation and tutorial materials to reflect this latest version of the GENI Desktop. |
| 18 | |
| 19 | === B. Deliverables made === |
| 20 | |
| 21 | * 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. |
| 22 | |
| 23 | * We demonstrated how the new gdcli can be used by other experimenter tools to integrate with the GENI Desktop. |
| 24 | |
| 25 | * 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. |
| 26 | |
| 27 | == II. Description of work performed during last quarter == |
| 28 | |
| 29 | The following provides a description of the progress made during the last reporting period. |
| 30 | |
| 31 | === A. Activities and findings === |
| 32 | |
| 33 | Our activities this last reporting period have been primarily focused on |
| 34 | the design, implementation, and deployment of a GENI Desktop Command Line Interface (gdcli) |
| 35 | that enables experimenters and tool developers to integrate the GENI Desktop into |
| 36 | their experiments and tools. We also presented a tutorial at the GEC 23 conference that |
| 37 | showed attendees how they could integrate the GENI Desktop into their experiments. |
| 38 | |
| 39 | The GENI Desktop greatly simplifies the task of instrumenting and monitoring |
| 40 | a users' experiment (slice). However, users could only access the GENI |
| 41 | Desktop via a web interface. In other words, there was not programmatic way |
| 42 | for experimenters or tool developers to leverage the GENI Desktop |
| 43 | functionality. |
| 44 | |
| 45 | To address this need we designed a new interface to the GENI Desktop that |
| 46 | could be used to programatically upload files, run commands, download |
| 47 | measurement graphs, etc --- functions previously only possible via the GENI |
| 48 | Desktop web interface. In particular, we developed an application that runs |
| 49 | on Linux (or other Unix-based systems), Mac, and Window called the gdcli |
| 50 | program that can be used to interact with the GENI Desktop. The gdcli |
| 51 | program can be used to: |
| 52 | |
| 53 | * Upload files to a select set of nodes |
| 54 | * Run a command on a select set of nodes |
| 55 | * Download a traffic measurement graph (as PNG or CSV) from a select set of nodes |
| 56 | * Download a normal file from a select set of nodes |
| 57 | * Get a list of slices |
| 58 | * Check the status of a slice |
| 59 | * Get the topology of a slice |
| 60 | * Validate the setup of a slice |
| 61 | * List the nodes in a slice |
| 62 | * List the links in a slice |
| 63 | |
| 64 | The gdcli program can be called from any scripting language (e.g., |
| 65 | python, perl, sh (bash), .BAT files, etc). As a result, users are able to |
| 66 | write programs in their favorite scripting language that make calls to the |
| 67 | GENI Desktop to upload/download files, download measurement graphs, run |
| 68 | commands, etc. |
| 69 | |
| 70 | There were several challenges that we had to address |
| 71 | while implementing the gdcli scripting interface. |
| 72 | First, we needed a way to make calls to the GENI Desktop server (e.g., to |
| 73 | download a traffic graph, or run a command). To solve this problem we |
| 74 | enhanced the GENI Desktop server to support HTTP posts that included |
| 75 | parameters to the request specifying, for example, the list of traffic graphs to be |
| 76 | downloaded (i.e., the nodes/links names and the types of graphs desired). |
| 77 | We implemented a python backend server specifically designed to process the |
| 78 | request, perform the action, and return the results. |
| 79 | The python backend shares access |
| 80 | with the previous GENI Desktop PHP code to the databases and files used by the |
| 81 | GENI Desktop, thereby ensuring that the results returned by the gdcli are the |
| 82 | same information as would be seen in the GENI Desktop web interface. |
| 83 | |
| 84 | A second challenge was securing the access to, and communication with, the |
| 85 | new python backend server. To ensure communication is secure, all communication |
| 86 | occurs over a secure connection using https. The problem of authorization |
| 87 | requires not only that the user authenticate themselves to the server, but |
| 88 | that the server obtain a "speaks-for" certificate to act on behalf of the |
| 89 | user. Because the existing speaks-for generation tools are designed for |
| 90 | interactive web use, not scripting, we decided to require that users first |
| 91 | authorize a speaks-for using the existing GENI Desktop web interface which |
| 92 | can then be stored and used by the GENI Desktop (and our new backend server) |
| 93 | until the speaks-for expires. However, this does not solve the authorization |
| 94 | problem. To ensure the users has the right to issue commands to our python |
| 95 | backend server, the web interface of the GENI Desktop also creates a secret |
| 96 | key (say at the same time the user authorizes the speaks for) that the user |
| 97 | must store on their local machine. The secret key is used when communicating |
| 98 | with the python backend server to prove that the user has the right to invoke |
| 99 | the requested operations on the GENI Desktop. In that sense, users can think |
| 100 | of the gdcli secret key like an ssh key that must be present on their local |
| 101 | machine in order to access the service. |
| 102 | |
| 103 | A third issue involved handling the results/output of a gdcli request. The |
| 104 | gdcli tool provide two mechanisms for handling the output from a request. |
| 105 | The first, and most simple mechanism, concatenates all the output files/graphs and prints |
| 106 | them to standard output, allowing users to redirect output to other programs |
| 107 | or tools. The second way gdcli handles output is to deposit each graph, |
| 108 | downloaded file, or output from a run command into a different file on the |
| 109 | local machine. Files are automatically assigned names that describe their |
| 110 | content (based on the slice, the aggregate, the node or link, and the type |
| 111 | of graph). Because the naming convention is known to experimenters, they can |
| 112 | easily write scripts that know what filenames to look for, and then feed |
| 113 | those files to the appropriate program for processing (e.g., copying traffic |
| 114 | graphs into a web directory to create a user-defined traffic mashup view). |
| 115 | |
| 116 | |
| 117 | === B. Project participants === |
| 118 | |
| 119 | The following individuals are involved with the project in one way or another: |
| 120 | * Jim Griffioen - Project PI |
| 121 | * Zongming Fei - Project Co-PI |
| 122 | * Hussamuddin Nasir - Technician/Programmer |
| 123 | * Charles Carpenter - Technician/Programmer |
| 124 | * Xiongqi Wu - Ph.D. Student |
| 125 | * Jeremy Reed - Ph.D. Student |
| 126 | |
| 127 | === C. Publications (individual and organizational) === |
| 128 | |
| 129 | === D. Outreach activities === |
| 130 | |
| 131 | * We presented the GENI Desktop during the Introduction to GENI Instrumentation & Measurement Tools portion of the Getting Started with GENI tutorial at GEC 23. |
| 132 | * We participated in the demo session at GEC 23, demonstrating the new gdcli interface |
| 133 | * We gave a tutorial entitled "Monitoring and Controlling Experiments with GENI Desktop Scripts and Modules" at the GEC 23 conference. |
| 134 | * We developed and posted online documentation for the new gdcli interface |
| 135 | |
| 136 | === E. Collaborations === |
| 137 | |
| 138 | * Most of our collaborations have been between the GPO Portal team and the aggregate teams at Utah and RENCI. |
| 139 | |
| 140 | === F. Other Contributions === |
| 141 | |