1. 21 Dec, 2004 1 commit
  2. 20 Dec, 2004 1 commit
  3. 16 Dec, 2004 2 commits
    • Robert Ricci's avatar
      Add support (admins only for now) for restarting the event system via · 1d13cde6
      Robert Ricci authored
      the web interface.
      1d13cde6
    • Leigh B. Stoller's avatar
      The panic button ... · 87dd2e60
      Leigh B. Stoller authored
      * tbsetup/panic.in: New backend script to implement the panic button
        feature. When used, it will cut the severe the connection to the
        firewall node by using snmpit to disable the port. Sets the panic
        bit (and date) in the experiments table, and changes the state of
        the experiment from "active" to "paniced" to ensure that the
        experiment cannot be messed with (swapped out or modified). Sends
        email to tbops when the panic button is pressed.
      
        Used with -r option, reverses the above. State is set back to
        active, the panic bit is cleared, and the port is renabled with
        snmpit.
      
      * tbsetup/tbswap.in: During swapout, a firewalled experiment that has
        been paniced will get a cleaning; The nodes are powered off, then
        the osids for all the nodes are reset (with os_select) so that they
        will boot the MFS, and then the nodes are powered on. Then the
        control network is turned back on, and then I wait for the nodes to
        reboot (this is simply cause we do not record in the DB that a node
        is turned off, and if I do not wait, the reload daemon will end
        hitting the power button again if they do not reboot in time. We can
        fix this later.
      
        I am not planning to apply this to general firewalled experiments
        yet as the power cycling is going to be hard on the nodes, so would
        rather that we at least have a 1/2 baked plan before we do that.
      
      * www/showexp.php3: If experiment is firewalled, show the Panic
        Button, linked to the panic button web script. If the experiment has
        already had the panic button pressed, show a big warning message and
        explain that user must talk to tbops to swap the experiment out.
        Also fiddle with menu options so that the terminate link is gone,
        and the swap link is visible only in admin mode. In other words, only
        an admin person can swap an experiment once it is paniced. And of
        course, an admin person can the backend panic script above with the
        -r option, but thats not something to be done lightly.
      
      * db/libdb.pm.in: Add "paniced" as an experiment state (EXPTSTATE_PANICED).
        Add utility functions: TBExptSetPanicBit(), TBExptGetPanicBit(), and
        TBExptClearPanicBit().
      
      * tbsetup/swapexp.in: Minor state fiddling so that an experiment can
        be swapped while in paniced state, but only when in admin mode. Also
        clear the panic bit when experiment is swapped out.
      
      * www/dbdefs.php3.in: Add "paniced" as an experiment state. Add a
        utility function TBExptFirewall() to see if experiment is firewalled.
      
      * www/panicbutton.php3: New web script to invoke the backend panic
        script mentioned above, after the usual confirm song and dance.
      
      * www/panicbutton.gif: New gif of a red panic button that I stole off
        the net. If anyone has sees/has a better one, feel free to replace
        this one.
      
      * utils/node_statewait.in: Add -s option so that I can pass in the
        state I want to wait for (used from tbswap above to wait for nodes
        to reach ISUP after power on).
      87dd2e60
  4. 15 Dec, 2004 2 commits
  5. 13 Dec, 2004 2 commits
    • Robert Ricci's avatar
      New script: tbsgmotepower - · b63374eb
      Robert Ricci authored
      	A script for powering on, off, and cycling motes attached to
      	stargates
      
      Requires /usr/local/bin/motepower (our program, not yet in CVS) to be
      installed on the hosting stargate.
      b63374eb
    • Timothy Stack's avatar
      · fde7ae29
      Timothy Stack authored
      Rmcd and garcia stuff:
      
      	* configure, configure.in: Add robot related template files.
      
      	* robots/GNUmakefile.in: Add primotion directory.
      
      	* robots/emc/emcd.c: Debugging printfs, check the status for
      	update-position messages from rmc, and add a basic handler for
      	emulab clients.
      
      	* robots/emc/test_emcd.sh.in: Update for changes in mtp.
      
      	* robots/mtp/mtp.h, robots/mtp/mtp.c: Changes for the garcia.
      
      	* robots/mtp/mtp_send.c: Fixes so that it will compile under
      	linux.
      
      	* robots/primotion/GNUmakefile.in: Makefile for building a fake
      	gorobot in the testbed tree.
      
      	* robots/primotion/Makefile: tweaks
      
      	* robots/primotion/gorobot.cc: First draft with sort-of working
      	networking code.
      
      	* robots/primotion/test_gorobot.sh.in: Test case for the fake
      	gorobot.
      
      	* robots/primotion/dgrobot/GNUmakefile.in: Makefile for building a
      	fake grobot class in the testbed tree.
      
      	* robots/primotion/dgrobot/grobot.h: Add #if !defined(GROBOT_SIM)
      	conditionals.
      
      	* robots/primotion/dgrobot/grobot_sim.cc: Empty impl of grobot
      	class used for testing.
      
      	* robots/rmcd/GNUmakefile.in: Targets for building rmcd and
      	running its test case.
      
      	* robots/rmcd/rmcd.c: First draft with sort-of working networking
      	code.
      
      	* robots/rmcd/test_emcd.config: emcd configuration for the rmcd
      	test case.
      
      	* robots/rmcd/test_rmcd.sh.in: Test case for rmcd.
      fde7ae29
  6. 10 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · d286c0cb
      Timothy Stack authored
      Start on vmc:
      
      	* configure, configure.in: Add vmcd related template files.
      
      	* robots/GNUmakefile.in: Switch order of vmcd/rmcd.
      
      	* robots/emc/GNUmakefile.in: cleanup
      
      	* robots/mtp/GNUmakefile.in: Add mtp_dump tool.
      
      	* robots/mtp/mtp.c: Change mtp_encode_packet to use a passed in
      	buffer pointer or allocate a buffer if its NULL, probably gonna be
      	a big source of errors...
      
      	* robots/mtp/mtp_dump.c: Another command-line tool that connects
      	to a server and dumps mtp packets that are received.  Useful for
      	seeing output from the vmc-client.
      
      	* robots/vmcd/GNUmakefile.in: Add vmc-client and test case.
      
      	* robots/vmcd/test_vmc-client.sh.in: Test case for the vmc-client.
      
      	* robots/vmcd/vmc-client.c: First cut of the vmc-client, it reads
      	mezzanine output and sends it to any connected clients.
      d286c0cb
  7. 09 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · 1f16a276
      Timothy Stack authored
      Make the dots move on the robot map web page:
      
      	* configure, configure.in: Add robots/emc/loclistener.
      
      	* event/lib/event.h, event/lib/event.c: Add some helper functions
      	for sending events and parsing args.
      
      	* event/lib/tbevent.py.tail, event/lib/tbevent.py: Add support for
      	clients that register using keyfiles.
      
      	* robots/emc/GNUmakefile.in: Install loclistener on boss.
      
      	* robots/emc/emcd.h, robots/emc/emcd.c: Send update events every
      	two seconds with the node's location.  Fill out a little more of
      	the event callback, not sure what to do with the requested
      	destination though.  Add some code to the vmc callback to store
      	position updates.  Changed the config file format to also include
      	the vname of the robot.
      
      	* robots/emc/loclistener.in: Listen for NODE MODIFY events with
      	coordinates and update the database accordingly.  Kinda sucks, but
      	it works.
      
      	* robots/emc/test_emcd.config: Add vnames to the robots to reflect
      	change in the config file format.
      
      	* tbsetup/ns2ir/node.tcl: Add nodes to the virt_agents table.
      1f16a276
  8. 08 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · feea9720
      Timothy Stack authored
      Elvinize emc and some bug fixes...
      
      	* configure, configure.in: Add "robots/emc/test_emcd.sh" script to
      	the list of template files.
      
      	* robots/GNUmakefile.in: Add a target for install-subdir.
      
      	* robots/emc/GNUmakefile.in: Compile emcd and install it on ops.
      	Add test_emcd.sh test case.
      
      	* robots/emc/emcd.h, robots/emc/emcd.c: Elvinize, add support for
      	events, and some minor cleanup.
      
      	* robots/emc/robot_list.c: Compilation fixes.
      
      	* robots/emc/test_emcd.config: Robot config for the test case.
      
      	* robots/emc/test_emcd.sh.in: Test case for emcd, just starts it
      	up and uses mtp_send to send a few messages to it.
      
      	* robots/mtp/GNUmakefile.in: Install mtp_send and mtp_recv on ops.
      
      	* robots/mtp/mtp.h, robots/mtp/mtp.c: Marshall floats correctly,
      	doh!  Move the packet printing code from mtp_recv to the lib.
      
      	* robots/mtp/mtp_recv.c: Move the packet printing code to the
      	lib.
      
      	* robots/mtp/mtp_send.c: Add a "-w" option to wait for a response
      	from the peer and then dump the packet to stdout.  Allow multiple
      	packets to be sent from a single invocation, the arguments for
      	each packet must be separated by a double dash (--), see
      	test_emcd.sh.in for an example.
      
      	* robots/mtp/mtp_test.c: Gah, test with actual floating point
      	values dummy.
      feea9720
  9. 07 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · 0ed6b518
      Timothy Stack authored
      Command line tools for the robot protocol:
      
      	* configure, configure.in: Add the robots GNUmakefiles.
      
      	* robots/mtp/GNUmakefile.in: Add command line tools: mtp_send and
      	mtp_recv.
      
      	* robots/mtp/mtp.c: Make readall return an error if all of the
      	data wasn't read instead of making the caller check.  Free the
      	buffer allocated in mtp_send_packet.  Add an mtp_free_packet.
      
      	* robots/mtp/mtp_recv.c: Faux receiver of mtp packets, it doesn't
      	actually follow the protocol, it just prints out whatever it
      	receives.
      
      	* robots/mtp/mtp_send.c: Command line tool for sending mtp
      	packets.
      0ed6b518
  10. 16 Nov, 2004 1 commit
    • Leigh B. Stoller's avatar
      ElabInElab Addition: New script that uses the frisbee client to · 6777d279
      Leigh B. Stoller authored
      download images from the outer emulab. This script is invoked from
      frisbeelauncher when ELABINELAB=1 and the filename does not exist
      (thus attempting to get the image file before bailing). The
      frisbeeimage script uses a new method in the RPC server to fire up a
      frisbeed (using frisbeelauncher on the outer Emulab), subject to the
      usual permission checks against creator of the elabinelab experiment
      (I assume that the creator will have access to any outer images that
      are used inside the inner emulab). If outer frisbeelauncher succeeds,
      its return value is the load_address (IP:port), which is used to fire
      up a frisbee client to get the image file and write it out (using
      Mike's new -N option that just dumps the raw data to file). Once the
      image is downloaded, control returns to inner frisbeelauncher and
      proceeds as normal.
      
      I whacked this together pretty quickly. Under heavy usage it might hit
      a race condition or two, but I do not expect that to happen in an
      inner elab for a while.
      6777d279
  11. 15 Nov, 2004 3 commits
  12. 12 Nov, 2004 1 commit
  13. 08 Nov, 2004 2 commits
    • Timothy Stack's avatar
      Just use '.' to source the defs file. · 037b78af
      Timothy Stack authored
      037b78af
    • Leigh B. Stoller's avatar
      Remove the SSLCERT defs and the network defs from configure proper. · b5b25b5d
      Leigh B. Stoller authored
      Move them to defs-default.
      
      Allow for per-user defs files to use . defs-default in them. I do this
      by temporarly changing the path when evaluating the defs file, adding
      the directory where the defs file lives. So, you can do this in your
      personal defs file, whic saves on a lot of typing!
      
      	. defs-default
      	TBOPSEMAIL=stoller@flux.utah.edu
      	TBLOGSEMAIL=stoller@flux.utah.edu
      	blah
      	blah
      	blah
      
      I also changed all of the *local* defs file to use the above format.
      b5b25b5d
  14. 07 Nov, 2004 1 commit
  15. 01 Nov, 2004 1 commit
  16. 30 Oct, 2004 1 commit
    • Robert Ricci's avatar
      The beginnings of mote support. · 0d561d76
      Robert Ricci authored
      Add tbuisp, a frontend to uisp, the program used to upload code to
      motes. Takes care of testbed permissions checking, and figuring out
      most of the command-line arguments to uisp (like the programming board
      chipset and microcontroller part number).
      
      For now, only supports uploading code to a mote, and has debugging
      output turned on.
      
      Depends on 'uisp' being installed - right now, that doesn't happen
      automatically. Probably what I should do is import the uisp code into
      our CVS tree, since it's GPLed, and not _too_ huge ( O(dozen) files. )
      0d561d76
  17. 29 Oct, 2004 2 commits
  18. 26 Oct, 2004 1 commit
  19. 25 Oct, 2004 1 commit
  20. 08 Oct, 2004 1 commit
  21. 07 Oct, 2004 1 commit
  22. 05 Oct, 2004 1 commit
  23. 04 Oct, 2004 1 commit
    • Leigh B. Stoller's avatar
      Add several configure variables to the defs file so that the ssl certificates · ad3a6c5b
      Leigh B. Stoller authored
      (config files) can be localized:
      
      	C                      = @SSLCERT_COUNTRY@
      	ST                     = @SSLCERT_STATE@
      	L                      = @SSLCERT_LOCALITY@
      	O                      = @SSLCERT_ORGNAME@
      
      Which are initialized locally to:
      
      	SSLCERT_COUNTRY="US"
      	SSLCERT_STATE="Utah"
      	SSLCERT_LOCALITY="Salt Lake City"
      	SSLCERT_ORGNAME="Utah Network Testbed"
      
      Also added an "apache" target which will generate an initial cert/key
      for the apache server. This is a self signed certificate of course, which
      is fine for getting a new site off the ground. Note that the cert/key are
      installed during by install/boss-install.
      ad3a6c5b
  24. 01 Oct, 2004 1 commit
  25. 30 Sep, 2004 3 commits
  26. 29 Sep, 2004 1 commit
  27. 28 Sep, 2004 1 commit
  28. 24 Sep, 2004 1 commit
  29. 01 Sep, 2004 1 commit
  30. 30 Aug, 2004 1 commit
    • Leigh B. Stoller's avatar
      The bulk of the event system changes. · 9aa6b5ca
      Leigh B. Stoller authored
      * The per-experiment event scheduler now runs on ops instead of boss.
        Boss still runs elvind and uses events internally, but the user part
        of the event system has moved.
      
      * Part of the guts of eventsys_control moved to new script, eventsys.proxy,
        which runs on ops and fires off the event scheduler. The only tricky part
        of this is that the scheduler runs as the user, but killing it has to be
        done as root since a different person might swap out the experiment. So,
        the proxy is a perl wrapper invoked from a root ssh from boss, which
        forks, writes the pid file into /var/run/emulab/evsched/$pid_$eid.pid,
        then flips to the user and execs the event scheduler (which is careful
        not to fork). Obviously, if the kill is done as root, the pid file has to
        be stored someplace the user is not allowed to write.
      
      * The event scheduler has been rewritten to use Tim's C++ interface to the
        sshxmlrpc server on boss. Actually, I reorg'ed the scheduler so that it
        can be built either as a mysql client, or as RPC client. Note that it can
        also be built to use the SSL version of the XMLRPC server, but that will
        not go live until I finish the server stuff up. Also some goo for dealing
        with building the scheduler with C++.
      
      * Changes to several makefiles to install the ops binaries over NFS to
        /usr/testbed/opsdir. Makes life easier, but only if boss and ops are
        running the same OS. For now, using static linking on the event scheduler
        until ops upgraded to same rev as boss.
      
      * All of the event clients got little tweaks for dealing with the new CNAME
        for the event system server (event-sever). Will need to build new images
        at some point. Old images and clients will continue to work cause of an
        inetd hack on boss that uses netcat to transparently redirect elvind
        connections to ops.
      
      * Note that eventdebug needs some explaining. In order to make the inetd
        redirect work, elvind cannot be listening on the standard port. So, the
        boss event system uses an alternate port since there are just a few
        subsystems on boss that use the server, and its easy to propogate changes
        on boss. Anyway, the default for eventdebug is to connect to the standard
        port on localhost, which means it will work as expected on ops, but will
        require -b argument on boss.
      
      * Linktest changes were slightly more involved. No longer run linktest on
        boss when called from the experiment swapin path, but ssh over to ops to
        fire it off. This is done as the user of course, and there are some
        tricks to make it possible to kill a running linktest and its ssh when
        experiment swapin is canceled (or from the command line) by forcing
        allocation of a tty. I will probably revisit this at some point, but I
        did not want to spend a bunch of time on linktest.
      
      * The upgrade path detailed in doc/UPDATING is necessarily complicated and
        bound to cause consternation at remote sites doing an upgrade.
      9aa6b5ca
  31. 18 Aug, 2004 1 commit