- 09 Feb, 2005 1 commit
-
-
Timothy Stack authored
Robot-related improvements based on feedback from Sid: * event/sched/event-sched.h, event/sched/event-sched.c, event/sched/rpc.h, event/sched/rpc.cc: Send a notification of the start of event time and timelines. Add a '-r' option that forces it to use the default rpc path (so dan can use a custom scheduler/rmcd/etc on ops). * robots/GNUmakefile.in, robots/emc/GNUmakefile.in, robots/mtp/GNUmakefile.in, robots/primotion/GNUmakefile.in, robots/rmcd/GNUmakefile.in, robots/vmcd/GNUmakefile.in, robots/tbsetdest/tbsetdest.cc: Add a control-install target. * robots/primotion/garcia-pilot.cc: Take out some experimental code. * robots/primotion/dashboard.hh, robots/primotion/dashboard.cc, robots/primotion/pilotClient.cc, robots/primotion/wheelManager.hh, robots/primotion/wheelManager.cc: When doing a COMMAND_STOP, make sure we only send one update packet, an idle or an abort. Also send back the actual distance travelled/pivoted. * robots/tbsetdest/tbsetdest.cc: Don't output setdest event's with a speed of zero. * tbsetup/eventsys_control.in: When replaying/stopping, clear the start of event time for the experiment. * tbsetup/power_mail.pm.in: Decrease the threshold used to tell if a node has been power cycled "recently". * tbsetup/ns2ir/node.tcl, tbsetup/ns2ir/sim.tcl.in: Bah, backout last change, orientation is supposed to be in degrees at these points. Also, when automatically picking the sync server, don't use nodes that are subnodes. * tmcd/common/bootsubnodes: Send an ISUP for motes. * www/moteleds.php3: Show the mote node names instead of the robots. * www/powertime.php3: Add option to mark nodes as powered off. * www/robotmap.php3: Display the elapsed time for the overall event time and for each active timeline. * www/showexp.php3: Only display the blinky lights menu item when there are motes. * www/shownode.php3: Change "Update Power Time" -> "Update Power State". * www/tutorial/mobilewireless.php3: Fix some nits. * xmlrpc/emulabserver.py.in: Add event_time_start method for storing/getting/clearing the start of event time for an experiment/timeline.
-
- 24 Jan, 2005 1 commit
-
-
Timothy Stack authored
Robot related stuff: power via e-mail, client-install fixups, checking coords against camera boundaries. * configure, configure.in: Add tbsetup/power_mail.pm to the list of template files. * doc/cross-compiling.txt: More stargate notes. * event/sched/rpc.cc: Updates for the addition of the cameras table. * robots/GNUmakefile.in, robots/emc/GNUmakefile.in, robots/mtp/GNUmakefile.in, robots/rmcd/GNUmakefile.in, robots/tbsetdest/GNUmakefile.in, robots/vmcd/GNUmakefile.in: client-install fixups. * tbsetup/GNUmakefile.in: Add power_mail.pm. * tbsetup/os_setup.in: Don't skip reboot of robots anymore. * tbsetup/power.in: Add special case for a power_id of "mail", which calls into the power_mail.pm backend. * tbsetup/power_mail.pm.in: E-mail backend for power, it sends an e-mail to tbops and waits for the outlets.last_power value to be updated from the power.php3 web page. * tbsetup/ns2ir/parse-ns.in: Add the contents of the cameras table to the TBCOMPAT namespace. * tbsetup/ns2ir/sim.tcl.in: More checking of "setdest" inputs. * tbsetup/ns2ir/topography.tcl: Update the checkdest method to check destination points against the camera list. * www/powertime.php3: Webpage used to update the last power time for nodes. * www/shownode.php3: Add "Update Power Time" menu button.
-
- 13 Jan, 2005 1 commit
-
-
Mike Hibler authored
The web interface could use some work...
-
- 10 Jan, 2005 1 commit
-
-
Timothy Stack authored
A bunch of engineering on the robot code. I'm sure I've broken something, but the majority of it is done and I wanted to get a checkpoint in. * GNUmakerules: Add rpcgen rules. * Makeconf.in: Add PATH and host_cpu variables so cross-compilation works properly. Add JAVAC and JAR for java compilation. Add BRAINSTEM_DIR that refers to a brainstem build directory to be used for the robot build. * configure, configure.in: Prepend the arm cross-compile dir to PATH. Detect java for building applets. Add --with-brainstem to specify the brainstem build dir. Add --enable-mezzanine to turn on the mezzanine build. * robots/GNUmakefile.in: Add client target that builds the subdirs. * robots/emc/GNUmakefile.in, robots/emc/emcd.h, robots/emc/emcd.c, test_emcd.sh.in, robots/rmcd/GNUmakefile.in, robots/rmcd/rmcd.c, robots/rmcd/test_rmcd.sh.in, robots/vmcd/test_vmc-client.sh.in, robots/vmcd/test_vmcd.sh.in, robots/vmcd/test_vmcd2.sh, robots/vmcd/test_vmcd3.sh, robots/vmcd/test_vmcd4.sh, robots/vmcd/vmc-client.c, robots/vmcd/vmcd.c: Updates for the mtp switch to using rpcgen. * robots/emc/test_emcd.config: Restore missing config line. * robots/mtp/GNUmakefile.in, robots/mtp/global_bound.java, robots/mtp/mtp.h, robots/mtp/mtp.c, robots/mtp/mtp.java, robots/mtp/mtp.x, robots/mtp/mtp_command_goto.java, robots/mtp/mtp_command_stop.java, robots/mtp/mtp_config_rmc.java, robots/mtp/mtp_config_vmc.java, robots/mtp/mtp_control.java, robots/mtp/mtp_dump.c, robots/mtp/mtp_garcia_telemetry.java, robots/mtp/mtp_opcode_t.java, robots/mtp/mtp_packet.java, robots/mtp/mtp_payload.java, robots/mtp/mtp_recv.c, robots/mtp/mtp_request_id.java, robots/mtp/mtp_request_position.java, robots/mtp/mtp_robot_type_t.java, robots/mtp/mtp_role_t.java, robots/mtp/mtp_send.c, robots/mtp/mtp_status_t.java, robots/mtp/mtp_telemetry.java, robots/mtp/mtp_update_id.java, robots/mtp/mtp_update_position.java, robots/mtp/robot_config.java, robots/mtp/robot_position.java, robots/mtp/test_mtp.sh: Replace hand-generated stubs with xdr stubs for C and java. Java stubs were generated by "remotetea's" jrpcgen. * robots/primotion/GNUmakefile.in, robots/primotion/buttonManager.hh, robots/primotion/buttonManager.cc, robots/primotion/dashboard.hh, robots/primotion/dashboard.cc, robots/primotion/flash-user-led.cc, robots/primotion/garcia-pilot.cc, robots/primotion/garciaUtil.hh, robots/primotion/garciaUtil.cc, robots/primotion/ledManager.hh, robots/primotion/ledManager.cc, robots/primotion/pilotButtonCallback.hh, robots/primotion/pilotButtonCallback.cc, robots/primotion/pilotClient.hh, robots/primotion/pilotClient.cc, robots/primotion/watch-user-button.cc, robots/primotion/wheelManager.hh, robots/primotion/wheelManager.cc: Replace gorobot with garcia-pilot, a beefed up daemon for controlling the robots. Improvements include: making use of the user LED and button to give some feedback and let the wrangler run a test sequence, reboot, and shutdown the robot; Logging of the battery level, how often the robot has moved and for how long, and the distance traveled; telemetry is sent back to emulab clients; movements are now just pivot-move instead of pivot-move-pivot, since the second pivot ends up being extra work most of the time; the robot will move backwards to cut down on the amount of rotation; and just generic cleanups to the code. * robots/primotion/garcia.config: The configuration file currently used on the garcias. * www/GNUmakefile.in: Add garcia-telemetry subdir to the build. * www/dbdefs.php3.in: Add TBNodeClass and TBNodeStatus functions. * www/garcia-telemetry/Base64.java, www/garcia-telemetry/GNUmakefile.in, www/garcia-telemetry/GarciaTelemetry.java, www/garcia-telemetry/UpdateThread.java, www/garcia-telemetry/main.xml: A telemetry applet for the garcia, it displays readouts for the various sensors and other bits of data gathered by the garcia-pilot daemon. Hopefully, it will make a handy debugging tool. * www/garcia-telemetry.jar, www/mtp.jar, www/oncrpc.jar, www/thinlet.jar: Java jars used by the robot telemetry applet. * www/servicepipe.php3: A slightly enhanced version of ledpipe.php3 that can be used for other services, like robot telemetry. * www/shownode.php3: Add "Show Telemetry" menu item to robot nodes. * www/telemetry.php3: Telemetry page for the garcia-telemetry applet.
-
- 06 Jan, 2005 1 commit
-
-
Leigh B. Stoller authored
* Add boot_errno to the nodes table so that nodes can report in a subcode to indicate what went wrong. At present, we do not report any real error codes; that is going to take some time to work out since it will reqiure a bunch of changes to the boot scripts. * Add new table node_bootlogs to store logs provided by the nodes. Not a full console log, but a log of the tmcd client side part. We can make it a full log if we want though; just means mucking about with the boot phase a bit. * Add new state transition to NORMALv2 and PCVM state machines. "TBFAILED" is a new state that is sent (after TBSETUP) if a node fails somewhere in the tmcd client side. * Change TBNodeStateWait() to take a list of states (instead of single state) and an optional pass by reference parameter to return the actual state that the node landed in. Change all calls to TBNodeStateWait() of course. * Change os_setup (and libreboot in wait mode) to look for both TBFAILED and ISUP. If a TBFAILED event is seen, we can terminate the wait early and not retry os_setup on physical nodes (although still retry virtual nodes). The nice thing about this is that the wait should terminate much earlier (rather then waiting for timeout), especially for virtual nodes which can take a really long time when there are a couple of hundred. * Add new routines dobooterrno() and dobootlog() to tmcd. Bump version number and increase the buffer size to allow for the larger packets that a console log wikk generate (added MAXTMCDPACKET variable, set to 0x4000). * Add new -f option to tmcc to specify a datafile to send along as the last argument to tmcd. This is more pleasing then trying to send a console log in on the command line. For example: "tmcc -f /tmp/log BOOTLOG" will send a BOOTLOG command along with the contents of /tmp/log. Also close the write side of the pipe so that server sees EOF on read. See aside comment below. * Changes to rc.bootsetup: 1. Use perl tricks to capture all output, duping to the console and to a log file in /var/emulab/logs. 2. On any error, send a status code (boot_errno) and the bootlog to tmcd. 3. Generate a TBFAILED state transition. * Changes to rc.injail: 1. Same as rc.bootsetup, but do not send log files; that would pummel boss. Leave them on the physical node. * Change vnodesetup (which calls mkjail) to watch for any error and send a TBFAILED state transition. This should catch almost all errors, and dramatically reduce waiting when something fails. * Changes to rc.cdboot are essentially the same as rc.bootsetup, although a bootlog is sent all the time (success or failure), and I do not generate a boot_errno yet. Also, instead of TBFAILED, generate a PXEFAILED state since the CDROM is actually operating within the PXEFBSD opmode. I have yet to work this into the rest of the system though; waiting to get a new CD built and actually experiment with it. * Add new menu option and web page to display the node bootlog. We store only the lastest bootlog, but maybe someday store more then one. Display boot_errno on node page. Aside: I made a big mistake in the tmcd protocol; I did not envision passing more then a small amount of data (one fragment) and so I do not include a record terminator (ie: close of the write side on the client sends EOF) or a size field at the beginning. No big deal since small requests are sent in one fragment and the server sees the entire thing. Well, with a large console log, that will end up as multiple fragments, and the server will often not get the entire thing on the first read, and there are no subsequent reads (with no EOF or known size, it would block forever). Well, fixing this in a backwards compatable manner (for old images) was way too much pain. Instead, tmcc now closes the write side, and the server does subsequent reads *only* in the new dobbootlog() routine. Note that it *is* possible to fix this in a backwards compatable manner, but I did not want to go down that path just yet.
-
- 07 Jun, 2004 1 commit
-
-
Leigh B. Stoller authored
-
- 12 Apr, 2004 1 commit
-
-
Leigh B. Stoller authored
places. Change $short optional argument to a flags argument, and add a NOPERM flag, which allows display of a node to people without permission to view that node. The display is cut back to node type, and a couple of other things that are not private. I also added a section on the Interfaces of a node, using the interfaces table for the node, joined with the interface_types and interface_capabilities tables. This gives more specific information about a node then is possible using the generic node_types table.
-
- 19 Dec, 2003 1 commit
-
-
Robert Ricci authored
'node' field already filled out.
-
- 16 Oct, 2003 1 commit
-
-
Leigh B. Stoller authored
-
- 09 Oct, 2003 1 commit
-
-
Leigh B. Stoller authored
* install-rpm, install-tarfile, spewrpmtar.php3, spewrpmtar.in: Pumped up even more! The db file we store in /var/db now records both the timestamp (of the file, or if remote the install time) and the MD5 of the file that was installed. Locally, we can get this info when accessing the file via NFS (copymode on or off). Remote, we use wget to get the file, and so pass the timestamp along in the URL request, and let spewrpmtar.in determine if the file has changed. If the timestamp it gets is >= to the timestamp of the file, an error code of 304 (Not Modifed) is returned. Otherwise the file is returned. If the timestamps are different (remote, server sends back an actual file), the MD5 of the file is compared against the value stored. If they are equal, update the timestamp in the db file to avoid repeated MD5s (or server downloads) in the future. If the MD5 is different, then reinstall the tarball or rpm, and update the db file with the new timestamp and MD5. Presto, we have auto update capability! Caveat: I pass along the old MD5 in the URL, but it is currently ignored. I do not know if doing the MD5 on the server is a good idea, but obviously it is easy to add later. At the moment it happens on the node, which means wasted bandwidth when the timestamp has changed, but the file has not (probably not something that will happen in typical usage). Caveat: The timestamp used on remote nodes is the time the tarfile is installed (GM time of course). We could arrange to return the timestamp of the local file back to the node, but that would mean complicating the protocol (or using an http header) and I was not in the mood for that. In typical usage, I do not think that people will be changing tarfiles and rpms so rapidly that this will make a difference, but if it does, we can change it. * node_update.in, client side watchdog, and various web pages: Deflated node_update, removing all of the older ssh code. We now assume that all nodes will auto update on a periodic basis, via the watchdog that runs on all client nodes, including plab nodes. Changed the permission check to look for new UPDATE permission (used to be UPDATEACCOUNT). As before, it requires local_root or better. The reason for this is that node_update now implies more than just updating the accounts/mounts. The web pages have been changed to explain that in addition to mounts/accounts, rpms and tarfiles will also be updated. At the moment, this is still tied to a single variable (update_accounts) in the nodes table, but as Kirk requested at the meeting, it will probably be nice to split these out in the future. Added the ability to node_update a single node in an experiment (in addition to all nodes option on the showexp page). This has been added to the shownode webpage menu options. Changed locking code to use the newer wrapper states, and to move the experiment to RUNNING_LOCKED until the update completes. This is to prevent mayhem in the rest of the system (which could be dealt with, but is not worth the trouble; people have to wait until their initiated update is complete, before they can swap out the experiment). Added "short" mode to shownode routine, equiv to the recently added short mode for showexp. I use this on the confirmation page for updating a single node, giving the user a couple of pertinent (feel good) facts before they comfirm.
-
- 11 Jul, 2003 1 commit
-
-
Leigh B. Stoller authored
-
- 08 Jul, 2003 1 commit
-
-
Leigh B. Stoller authored
-
- 01 Jul, 2003 1 commit
-
-
Leigh B. Stoller authored
Chad's tiptunnel stuff. Requires ssh-mime.pl in the current directory, to be installed as a browser helper application on the users machine. Copied Chad's instructions for the tiptunnel from the FAQ, and stuck it into ssh-mime.html as a help file (not really FAQ material). The intent of this of course is to make ssh into jailed nodes easier, but not having to know port numbers, or directly log into ops first, when the jails are using control network IPs in our private IP space (not routable from outside).
-
- 03 Mar, 2003 1 commit
-
-
Chad Barb authored
Better headers on shownode page, also added "Project" prefix to header on showproject and "Experiment" prefix to header on showexp.
-
- 13 Jul, 2002 1 commit
-
-
Jay Lepreau authored
-
- 09 Jul, 2002 1 commit
-
-
Robert Ricci authored
Serial Line' option.
-
- 07 Jul, 2002 1 commit
-
-
Leigh B. Stoller authored
-
- 28 Jun, 2002 2 commits
-
-
Chad Barb authored
Added faq entry, added script to generate acl files, and added menu option (With "howto" link to FAQ") to shownode.
-
Leigh B. Stoller authored
-
- 28 May, 2002 1 commit
-
-
Leigh B. Stoller authored
information page. Got tired of having to past the them all by hand between windows. Only admins can do this. Also, add subpage menu stuff to make the page look nicer.
-
- 08 Feb, 2002 1 commit
-
-
Leigh B. Stoller authored
supporting autocreating and autoloading images. The imageid form now sports a field to specify a nodeid to create the image from; If set, the backend create_image script is invoked. Thats the easy part. Slightly harder is autoloading images based on the osid specified in the NS file. To support this, I have added a new DB table called osidtoimageid, which holds the mapping from osid/pctype to imageid. When users create images, they must specify what node types that image is good for. Obviously, the mappings have to be unique or it would be impossible to figure it out! Anyway, once that image mapping is in place and the image created, the user can specify that ID in the NS file. I've changed os_setup to to look for IDs that are not loaded, and to try and find one in the osidtoimageid. If found, it invokes os_load. To keep things running in parallel as much as possible, os_setup issues all the loads/reboots (could be more than a single set of loads is multiple IDs are in the NS file) at once, and waits for all the children to exit. I've hacked up os_load a bit to try and be more robust in the face of PXE failures, which still happen and are rather troublsesome. Need an event system! Contained in this revision are unrelated changed to make the OS and Image IDs per-project unique instead of globally unique, since thats a pain for the users. This turns out to be very messy, since underneath we do not want to pass around pid/ID in all the various places its used. Rather, I create a globally unique name and extened the OS and Image tables to include pid/name/ID. The user selects pid/name, and I create the globally unique ID. For the most part this is invisible throughout the system, except where we interface with the user, say in the web pages; the user should see his chosen name where possible, and the should invoke scripts (os_load, create_image, etc) using his/her name not the internal ID. Also, in the front end the NS file should use the user name not the ID. All in all, this accounted for a number of annoying changes and some special cases that are unavoidable.
-
- 20 Oct, 2001 1 commit
-
-
Leigh B. Stoller authored
viewing the log.
-
- 16 Oct, 2001 1 commit
-
-
Leigh B. Stoller authored
-