in the experiment_resources table as a BLOB. The advantages are no
more special directory and permission problems, and an archive of
pretty pictures of experiments (including per-modified experiments).

before was idle view of the expt list. Now it shows in all (non-thumb)
views.
I also added it to the right hand table in the expt page.
It also shows in the little expt lists in the user, group, and proj pages.
(I'm already really glad those got consolidated into a single function.)
Also cleaned up idle view a bit. Now that we show staleness and idle
ignore anyway, we don't need text tags for them, and we no longer need the
red dot that links to swap requests because of idlemail. So there's no
longer the weird double-column thing in idle view.
I'm still looking for a good way to non-intrusively mark expts in the expt
list as being unswappable, so if you think of anything, let me know.
(Maybe boldface, or a little lock icon or something?)

swap_exitcode (last error), idle_swaps (a count), batch (a flag to
indicate a batch experiment).
Add a operational log. Okay, its not actually a log, but a table that
will grow forever until it consumes the earth. Its a small table
though, so it will take a few years. Its cross indexed with the
experiment_stats table, so by massaging this table along with the
stats table, we can get a good picture of what was running on the
testbed when, and how many resources it was using. Sorry, not a log
file, but we can easily generate a log file from tbe table if the Boss
really wants one. The table entry averages 28 bytes.
Move stats to their own main menu item (admin mode only). Remove from
the showexp_list page since that was bogus.

The first three are aggregate tables, while the experiment stats table
gets a record for each new experiment, and is updated when an
experiment is swapped in/out/modify or terminated. Look at the table
to see what is tracked. Once the experiment_stats record is updated,
the aggregate tables are updated as necessary. There are a bunch of
ugly changes to assign_wrapper to get the stats. Note that pnodes is
not incremented until an experiment sucessfully swaps in. This is in
leu of getting status codes; I'm not tracking failed operations yet,
nor creating the log file that Jay wants. I'll do that in the next
round of changes when we see how useful these numbers are.
Most of the changes are to create/delete table entries where
appropriate, and to display the records. Display is only under admin
mode, and the display is raw; just a dump of the assoc tables in php.
The last 100 experiment stats records are available via the Experiment
List page, using the "Stats" show option at the top. Bad place, but
will do for now.

you're also showing them the red dot for a swap request. Second, add a
noignore flag for idle view (and a link to it from idle view) that will
show you all the idle expts, even if they have the idle_ignore bit set.

- Added a bunch of functions to get time of last activity, hours idle,
and staleness for nodes and experiments.
- Fixed the showexp_list page to use the new idle measures, including
idle view. Idle view now runs in about 1.3 seconds instead of 13.
- Changed all the "show" functions for nodes and expts to show idleness.
More changes will be coming, but I wanted to commit this before I install
it for real.

idle but someone logged in sometime today, it meant that someone had
logged in since the most recent slothd report (up to an hour ago). Now
that our time of idleness is much lower than 24 hours, it is easy for
someone to have logged in today and still have it be idle. So remove the
check.
This means that you should wait at least an hour from the time you send a
message before you swap it out, to make sure that your data was correct
when you sent the message. Not optimal, but fixed with the new slothd that
goes in this week.

Added thumbnail (2x as large as the one which shows up in the list) to showexp page.
Added heading to vis(shownsfile), showexp and showproj pages, to more readily identify what you're looking at.
Added links from thumbnails to vis(shownsfile) page.
Added submenu hackiness to menu.php3 to allow embedding of things into left panel below submenu.
Removed "red letter" legend and PC summary from bottom of thumbnail view.

Added "thumbnail view" to Experiment List page.
Added thumbnail rendering to renderer.
Note that thumbnail view is not available when viewing the idle list.
Also, loading thumbnails for "all" as admin takes a while!

"active" was changed to mean experiments with reserved nodes,
regardless of its actual state. The result is that the default view
would return every single experiment, and then we would prune out
later, but not before we did a second query per experiment, which made
the admin version of the page really slow!

The big one.
New look;
most of the changes are in menu.php3.
A lot of the changes in other files are s/<TD>/<TH>/
for table headers.
Also closed some tags, tweaked some table styles, etc..
No actual functionality should have changed.
Will be installing soon...

give this stuff a major overhaul when we move to the model where we
have data on when each node was last "touched" or actively used. (Most
of these changes will still be relevant.)
1. Fix a bug in idlecheck that we didn't really thing much about. It
turns out that the WanSpread people have had a 17 node expt idle for
over three weeks, we didn't detect it because the nodes were running
ospf and generating lots of network traffic on the exptl. net. We now
ignore the exptl. network traffic as a source of activity if they have
automatic ospf routing happening. We also ignore nodes that have any
trafgen endpoints.
2. After the changes in idlecheck, I updated idle view to correctly
handle a new flag idlecheck outputs to let us know that an expt has
ospf running and may be falsely inactive because we ignored net
traffic. It will probably be very rare that an active expt that is
running ospf will have only network activity and no tty activity, but
it is a potential source of false positives. I also did some random
libifying. There were some hard coded references to emulab.net that I
fixed to properly use the variables from the defs file.
3. I also updated request_swapexp.php3. It now inlcudes in the email
message a blurb about automatic swapping, depending on whether or not
they're marked swappable. (If swappable, it says "This experiment is
marked as swappable, so it may be automatically swapped out by
Emulab.Net or its operational staff." and if unswappable, it says
"This experiment has not been marked swappable, so it will not be
automatically swapped out.") It also has a reference to the Node Usage
Policy and gives the URL. So we now give them fair warning about
potentially getting swapped out and what our policies are.