MeasurementSystem: 2010_04_29_GIMS_TODO.txt

File 2010_04_29_GIMS_TODO.txt, 6.6 KB (added by cthomas@wisc.edu, 10 years ago)

GIMS GUI "To Do" List as of 2010-04-29

Line 
1Add "AddDevice", "EditDevice", "DeleteDevice" functionality.
2  - Associated GUI "Admin" page from which to add/delete/edit GIMS devices in the Database.
3
4Create some kind of app to run on the capture device host to gather stats on CPU usage and related processes used, number of users, etc.?
5  - Would either push info to the DB, rrd file elsewhere or would provide updates on query.
6  - Should discuss the best way to handle this.  It might be best to specify an XML/RPC structure to be returned and let the implementation on each device be handled individually?
7
8At some point we need to decide when to give the user a chunk of the capture resource.  On Setup? On Start?  That is, we need to decide when to instantiate the experiment on the device and thus make that percentage of the total available resource unavailable for others. 
9  - The user will specify that they need a monitored link and this will be reflected in the rSpec. 
10  - We may have to determine how to extend the rSpec for this and how to get protoGENI to handle it.  Ask for Rob Ricci's help with this?
11  - It might be enough to just try to start the experiment or try to configure the experiment, and fail if there are insufficient resources. 
12  - On such a failure, we probably have to clean up after that ExperimentID.
13
14GetExperimentStatus functionality:
15  - If experiment is running, take user to a real-time update page with graphs, stats on the data flow, CPU usage, etc.  Gauges?  Kind of a dashboard thing with realtime updates.
16
17GetExperimentResults functionality:
18  - If experiment is completed, take user to a post-experiment page with links to data, statistics, etc.
19
20Have GetExperimentSettings use AJAX to get the settings and display them in the intro window's 'results' field??
21
22On "CreateNewExperiment" submission:
23  - Check if ExpID already exists.  If it does, throw a fault.
24  - Low priority since it's not likely to happen.
25
26On "ConfigureExperiment":
27 - Check getExpStatus(ExpID)
28   * If status returns "undef"
29       1) Add ExpID to experiment table with status 'instantiated'.
30       2) Configure as usual.
31       3) Set experiment.status to 'configured'.
32   * If status eq 'instantiated' or status eq 'configured':
33       1) Configure as usual
34       2) Set experiment.status to "configured" on success.
35   * If status eq 'running':
36       1) Throw fault that user cannot configure a running experiment.
37   * If status eq 'done':
38       1) Prompt the user to choose a new ExperimentID. 
39       2) Give option to copy the settings from the ExpID that was given.
40   * Else
41      1) Set the exp_device settings for this device/ExpID pairing.
42      2) Configure as usual
43      3) Set experiment.status to "configured" on success.
44
45On "StartExperiment":
46 - Check getExpStatus(ExpID)
47   * If status eq 'instantiated' or 'undef'
48     1) Throw fault - Must configure device.
49   * If status eq 'configured'
50      1) Start the exeriment.
51      2) Set experiment.status to "running" on success.
52      3) Set experment.exp_start timestamp on success.
53   * If status eq 'running'
54     1) Throw fault - Experiment already running.
55   * If status eq 'done'
56     1) Throw fault - Cannot start a stopped experiment?
57   * Else
58     1) Return a fault XML object - no such device/ExpID pair.
59
60On "StopExperiment":
61 - Check getExpStatus(ExpID)
62   * If status eq 'instantiated' or 'undef'
63     1) Throw fault - Must configure device.
64   * If status eq 'configured'
65     1) Throw fault - Cannot stop an experiment that is not running.
66   * If status eq 'running'
67      1) Stop the exeriment.
68      2) Set experiment.status to "done".
69      3) Set experiment.exp_end timestamp.
70   * If status eq 'done'
71     1) Throw fault - Experiment already done.
72   * Else
73     1) Return a fault XML object - no such device/ExpID pair.
74 - Call GetExperimentResults.
75 - Display Experiment Results.
76
77On "GetExperimentSettings":
78 - Do we want to display results in the editing GUI for users to make further changes?
79 - Alternately we could display the results in a non-editable form of the GUI.
80
81On "GetExperimentStatus":
82 - Create SNMP query mechanism to allow display of CPU usage and number of processes (related to capture device) for each capture device host.
83
84###################### DONE #########################
85
86Move the results field to below the controls.
87
88Replace the current start/stop paradigm with start/pause/stop.
89 - Logic in software components.
90 - Graphics in GUI
91
92Make sure that if the capture device doesn't respond to a command (e.g. never started standin.pl running) that the UI tells the user something more useful than this: "Not a GLOB reference at /usr/local/lib/perl5/site_perl/5.8.9/mach/XML/LibXML.pm line 745. at /usr/local/lib/perl5/site_perl/5.8.9/mach/XML/LibXML/SAX.pm line 80 at /usr/local/lib/perl5/site_perl/5.8.9/XML/Simple.pm line 366"
93
94In the Select Action GUI:
95  - If the user slects an ExpID from the pulldown:
96    1) Have the ajax backend get the device name/location from the database.
97    2) Set the capture device name pulldown accordingly.
98
99In the AJAX backend:
100  - Handle getExpDevices by returning a list of (initially one) devices for a given experiment id.
101
102On "CreateNewExperiment":
103  - Must pass ExpID, location, and device_name.
104  - Insert new exeriment entry into table.
105  - Insert new exp_device entry into table.
106
107On Welcome page:
108  - Have ExperimentID be a pulldown list of existing and valid experimentIDs.
109  - Show experiment status next to each ID in this pulldown.
110  - Show last update datetime next to each ID.
111  - Get rid of 'Generate ID' button.
112  - If they select CreateNewExperiment
113    * Generate a new ExperimentID
114    * Populate the ExperimentID field with this ID.
115    * Don't allow them to edit that field.
116
117Create new subs in GIMSDBUtils:
118  - addExperiment(dbh, exp_id, user);
119  - addExpDevice(dbh, exp_id, location, device_name);
120
121Add "status" field to the experiment table with enum types "instantiated", "configured", "running", "done".
122
123Ajax backend should handle "Generate new ExperimentID" request calling createExperimentID() in GIMSDBUtils.
124
125Set up javascript enable/disable on generateID button - toggle with text box content. 
126- On for empty text box.
127- Off for anything in text box.
128- Disable buton when an ExpID is generated. 
129
130Implement genExperimentID($) in GIMSDBUtils to return random experiment IDs of the type MSN_dd893d9a9b0d30a5a911aa921da58a76.
131
132Implement getNewExpID() in GIMSDBUtils.
133my $new_exp_id = '';
134do
135  my $new_exp_id = GIMSDBUtils::genExperimentID();
136while (!$new_exp_id or expIDExists($new_exp_id));
137
138Implement expIDExists() in GIMSDBUtils.
139
140On "GetExperimentSettings":
141- Return all experiment settings.
142- Display nicely formatted settings in the window.
143