More robot integration and some event system updates.
* configure, configure.in: Detect rsync for loghole and add
utils/loghole to the list of template files.
* db/libdb.pm.in, db/xmlconvert.in: Add virt_node_startloc to the
list of virtual tables.
* event/lib/event.h, event/lib/event.c, event/lib/tbevent.py.tail:
Add event_stop_main function to break out of the event_main()
loop. Add timeline to the address tuple.
* event/sched/GNUmakefile.in, event/sched/error-record.h,
event/sched/queue.c, event/sched/rpc.h, event/sched/rpc.cc,
Updated event scheduler, not completely finished, but well enough
along for the robots.
* lib/libtb/GNUmakefile.in, lib/libtb/popenf.h,
lib/libtb/popenf.c, lib/libtb/systemf.h, lib/libtb/systemf.c: Add
some handy versions of system/popen that take format arguments.
* lib/libtb/tbdefs.h, lib/libtb/tbdefs.c: Add some more event and
* tbsetup/assign_wrapper.in: Add the virt_node_startloc building
to desires string for a node.
* tbsetup/ptopgen.in: Add a node's location to the feature list.
* tbsetup/tbreport.in: Display the timeline/sequence an event is a
* tbsetup/ns2ir/GNUmakefile.in: Add timeline, sequence, and
* tbsetup/ns2ir/node.tcl: Add initial position for nodes and allow
them to be attached to "topographys".
* tbsetup/ns2ir/parse-ns.in: Make a hwtype_class array with a
node_type's class. Make an 'areas' array that holds the
buildings where nodes are located. Make an 'obstacles' table
with any obstacles in the building.
* tbsetup/ns2ir/parse.tcl.in: Move named-args function from
tb_compat.tcl to here. Add reltime-to-secs function that converts
time given in a format like "10h2m1s" to a seconds value, used in
"$ns at" so its easier to write time values. Add "K", "Kb", and
"Kbps" as possible units for bandwidth (only the lowercase
versions were available before).
* tbsetup/ns2ir/program.tcl: Add "dir" and "timeout" attributes,
although they don't go anywhere at the moment.
* tbsetup/ns2ir/sequence.tcl, tbsetup/ns2ir/timeline.tcl,
tbsetup/ns2ir/topography.tcl: Initial versions.
* tbsetup/ns2ir/sim.tcl.in: Add support for timelines and
sequences. Add 'node-config' method to change the default
configuration for nodes produced by the Simulator object. Send an
initial MODIFY event to any trafgen objects so their configuration
gets through, even when there are no start/stop events. Move
event parsing to the 'make_event' method.
* utils/loghole.1, utils/loghole.in: Loghole utility, used for
retrieving logs from experimental nodes and creating archives of
* xmlrpc/emulabclient.py.in: Escape any strange characters in the
* xmlrpc/emulabserver.py.in: Add virt_node_startloc to the list of
virtual_tables. Add emulab.vision_config and
emulab.obstacle_config methods for getting information pertaining
to the robots. Change the OSID listing to include more fields.
Add a "physical" aspect to experiment.info to get information
about the physical nodes. Add parent field to the events in the
array returned by eventlist. Add sshdescription to get extra
information needed to log into a vnode. Add node.statewait so you
can wait for nodes to come up.