1. 11 Apr, 2005 1 commit
  2. 01 Mar, 2005 1 commit
  3. 03 Feb, 2005 1 commit
  4. 14 Jan, 2005 1 commit
    • Timothy Stack's avatar
      · dee46d59
      Timothy Stack authored
      Cross compilation fixes for the stargates, 'gmake client' should now
      build, link, and install properly.  Haven't really tried to run stuff though.
      
      	* GNUmakerules: Add target for stripping executables, used instead
      	of "install -s" since that doesn't work for cross-compiling.
      
      	* Makeconf.in: Add ELVIN_CONFIG variable that refers to
      	'elvin-config'.
      
      	* configure, configure.in: Detect and save the elvin-config path
      	since we need a different one for cross-compiling.
      
      	* event/lib/GNUmakefile.in, event/link-agent/GNUmakefile.in,
      	event/linktest/GNUmakefile.in, event/program-agent/GNUmakefile.in,
      	event/proxy/GNUmakefile.in, event/tbgen/GNUmakefile.in,
      	event/trafgen/GNUmakefile.in, os/dijkstra/GNUmakefile.in,
      	os/syncd/GNUmakefile.in, sensors/slothd/GNUmakefile.in,
      	tmcd/GNUmakefile.in, tmcd/linux/GNUmakefile.in: Cross compilation
      	fixes, don't statically link on arm, create "foo-debug"
      	executables with debugging info and install separately stripped
      	ones instead of passing "-s" to install.
      dee46d59
  5. 03 Jan, 2005 1 commit
  6. 24 Sep, 2004 1 commit
  7. 10 Sep, 2004 1 commit
  8. 09 Sep, 2004 1 commit
  9. 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
  10. 29 Jun, 2004 1 commit
    • Leigh B. Stoller's avatar
      Some "improvements" to linktest ... · 159076bf
      Leigh B. Stoller authored
      * The linktest daemon (the one that runs on the nodes) no longer talks
        to boss directly, but instead contacts the local elvind; rc.linktest
        is changed to reflect that.
      
      * A bunch of signal handler changes to run_linktest.pl; do not rely on
        events to stop linktest when it is running on boss; when the user
        kills a running linktest make sure all the processes are killed
        explicitly.
      
      * New wrapper script (linktest_control) for use on boss, specifically
        when being called from the web interface. This script handles the DB
        part (getting linktest_level and linktest_pid), making sure that
        only one linktest is running at a time (on boss) and reseting the
        pid in the DB as needed. The -k option kills a running linktest, and
        is invoked from the web interface when the user wants to kill one in
        progress. This gets the pid from the DB and sends it a TERM signal,
        which sends a TERM to the run_linktest.pl script, which sends a TERM
        to the ltevent helper app.
      
        Note that this wrapper is also suitable for the XMLRPC interface,
        although I have not added it there yet.
      159076bf
  11. 28 Jun, 2004 1 commit
    • Leigh B. Stoller's avatar
      Fix a few things that cropped up while debugging for jails. · 2861a1a6
      Leigh B. Stoller authored
      * Do not have linktest daemon connect to boss; have it connect to
        local node elvind like all other local agents. Remove the event
        generation code (linktest was sending a KILL event to all other
        linktest programs), and replace with a system() call to tevc, which
        sends the event through the scheduler and exits; this will avoid a
        zillion tcp connctions to boss from the linktest daemon.
      
      * A couple of process group changes to linktest daemon; the daemon
        appeared to be killing itself off.
      
      * Fix to run_linktest.pl; It was just hanging after it completed,
        cause its child ltevent process was still running. Changed to record
        child pid, and kill/close ltevent child before exiting.
      2861a1a6
  12. 24 Jun, 2004 1 commit
    • Mike Hibler's avatar
      Improve the client-side install. With these changes, it should now be · 976133e4
      Mike Hibler authored
      possible to:
      
      	gmake client
      	sudo gmake client-install
      
      on a FBSD4, FBSD5, RHL7.3, and RHL9.0 client node.
      
      There are still some dependencies that are not explicit and which would
      prevent a build/install from working on a "clean" OS.  Two that I know of are:
      you must install our version of the elvin libraries and you must install boost.
      976133e4
  13. 11 May, 2004 1 commit
  14. 29 Apr, 2004 2 commits
  15. 28 Apr, 2004 1 commit
  16. 26 Apr, 2004 1 commit
    • Mike Hibler's avatar
      Cleanup Makefiles: · 297019fb
      Mike Hibler authored
      1. "make clean" will just remove stuff built in the process of a regular build
      2. "make distclean" will also clean out configure generated files.
      
      This is how it was always supposed to be, there was just some bitrot.
      297019fb
  17. 21 Apr, 2004 1 commit
  18. 20 Apr, 2004 2 commits
    • Mike Hibler's avatar
      Improve the client-install. You can now do a "make client-install" from · 361ee691
      Mike Hibler authored
      the top level.  This will build all the necessary binaries and then install
      them.  This works on FBSD4 and RHL7.3.  It still doesn't work on FBSD5
      (newer compiler that no longer supports a style of use of _FUNCTION_ in the
      event lib) or RHL9 (event lib needs SSL lib which has a bad dependency
      on Kerberos).  Notes:
      
      - requires that elvin libraries be installed on nodes (they are) to build
        event agents, requires linuxthreads be installed on FBSD (it is now) to
        build imagezip (which is installed, but is not strictly necessary)
      
      - installed event-agents and other binaries are stripped
      
      - added a few missing files to the source tree for bsd (healthd.conf)
        and linux (healthd.conf, rc.local)
      
      - the only thing that doesn't get rebuilt in /usr/local/etc/emulab is
        healthd, I couldn't quickly find how it gets built
      
      - uses a scaled down version of libtb with no DB functions (since mysql
        isn't installed on nodes).  N.B. DO NOT DO A CLIENT INSTALL FROM YOUR
        REGULAR OBJ TREE OR ELSE YOU MAY WIND UP WITH A NEUTERED VERSION OF
        libtb.a!
      
      The build-as-well-as-install semantics are counter to the regular install
      targets, but this is what we gotta do for now.  Once the TB source builds
      under Linux and newer BSDs, we could undo this and just require that people
      do a regular "make" followed by "make client-install"  OTOH, there should
      be no reason to require installation of mysql and other server-side packages
      just to build clients (or make them sit through the compilation of assign),
      so maybe we will keep the client build special.
      361ee691
    • David Anderson's avatar
      Small change to makefile to include nstb_compat when building client-install. · ca2ce5c5
      David Anderson authored
      Note: more changes are pending for the makefile related to moving to standard makefile style/suppressing errors.
      ca2ce5c5
  19. 05 Feb, 2004 1 commit
  20. 29 Jan, 2004 1 commit
    • Leigh B. Stoller's avatar
      Redo run_linktest.pl so that it is okay to run on boss/ops. Note that · b4480193
      Leigh B. Stoller authored
      I am not using paperbag to run it on ops, but just installing the two
      programs that are needed. Eventually should paperbag it.
      
      This same script runs on both boss/ops and on experimental nodes to
      fire off the linktest daemon on the nodes and wait. This is icky as
      some crufty stuff has to be done so that it will run in both
      environments. ltevent is of course not needed on boss, but do not want
      to bother it now since it *is* needed on the nodes.
      
      To run it on boss script needed severe cleanup and taint checking.
      Also added the use of event keyfile, which is currently optional, but
      needs to be mandatory once the images are updated.
      
      The current problem is that run_linktest can hang waiting for the
      clients to finish?. We can use quick mode in the experiment setup
      path, but maybe we need a cancel operation?
      b4480193
  21. 26 Jan, 2004 1 commit
  22. 17 Jan, 2004 1 commit
    • David Anderson's avatar
      Checkpoint commit. I've added the static-linked program "ltevent" to send · c6911250
      David Anderson authored
      and wait for linktest events, and integrated it into the perl scripts.
      
      At this point I'm working on small potatoes such as the rc.setup script
      to invoke linktest daemon and nailing down where to put platform-specific
      stuff such as the ns-linktest build and the customized tb-compat.
      
      Also am testing linktest in cases where I've deliberately inserted an error
      to make sure it catches it.
      c6911250
  23. 14 Jan, 2004 1 commit
    • David Anderson's avatar
      Updates to Linktest for a caller script, run_linktest.pl. · 5a1ab5a8
      David Anderson authored
      This includes an updated client-install.
      
      However, this is not yet ready for builds due to certain libraries not
      present on the nodes and ops. For those I will be writing a static
      linked c program to handle the linktest "done" event in both linktest.pl
      and run_linktest.pl.
      5a1ab5a8
  24. 16 Dec, 2003 1 commit
  25. 24 Nov, 2003 1 commit
  26. 05 Nov, 2003 1 commit
    • Leigh B. Stoller's avatar
      Middle part of the event system changes. The main part of this change · 54bc15c4
      Leigh B. Stoller authored
      is to add HMACs to events to ensure they that events cannot be
      injected into an experiment by an unauthorized client.
      
      * The frontend now generates a secret key for each experiment and
        stores that into a file and in the DB.
      
      * Each of the event clients, as well as the event producers
        (scheduler, tevc) have a new -k option to specify the name of the
        file. Two new event library functions were added for clients to give
        the key:
      
          event_handle_t
          event_register_withkeyfile(char *name, int threaded, char *keyfile);
      
          event_handle_t
          event_register_withkeydata(char *name, int threaded,
      	   		       unsigned char *keydata, int keylen);
      
      * When the library is in possesion of a key, it will generate an HMAC
        and attach it to outgoing notifications. A client receiving a
        notification will compute an HMAC and compare it against the HMAC in
        the notification. If they do not compare, the notification is
        dropped with a warning message printed (the client callback never
        gets the notification). If the client has not provided a key, then
        the HMAC in the incoming notification is ignored.
      
      * The scheduler also takes a -k option, and will compute HMACs for all
        of the static events ahead of time. That keeps it off the critical
        path.
      
      * The tevc client also takes a -k option. However, tevc will always
        try to find the keyfile (default path) so that it can attach the
        HMAC to dynamic events before sending them to the scheduler (which
        will check to make sure it matches). The scheduler will not accept
        dynamic events without unless the HMAC is present and matches.
      
      * I have rebuilt the elvin librarys, removing all of the X goop and
        the SSL goop. Smaller binaries. So, I had to add -lcrypto to all of
        the client makefiles to that programs link.
      
      * The program-agent got a few more changes. The command string is no
        longer passed inside the event; it comes in when the program agent
        is started, via a config file generated from tmcd data. This gets
        rid of our mostly insecure remote execution facility.
      54bc15c4
  27. 30 Sep, 2003 1 commit
  28. 10 Jun, 2003 1 commit
  29. 18 Dec, 2002 1 commit
  30. 10 Jul, 2002 1 commit
  31. 22 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      New "program agent" that runs on the client nodes (freebsd and linux) · 187a3a18
      Leigh B. Stoller authored
      and reponds to PROGRAM events. Currently, just start and stop. Start
      takes a COMMAND= argument, and allows arbitrary command lines since I
      pass the whole thing off to the shell. Caveat; the agent runs as root
      and starts the program as root. You can has as many program objects in
      your NS file as you like, but each one can be started once; you have
      to either stop or wait for the old one to finish before trying to
      start again.
      187a3a18
  32. 07 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      Isolate the pain of building threaded (and statically linked) event · 4dad8ebe
      Leigh B. Stoller authored
      system programs. Build two versions of the event library, one for non
      threaded programs and another (libevent_r.a) for threaded versions.
      Remove all that -pthread goo from all of the makefiles, except for the
      scheduler (which is threaded); it gets linked as before, but with
      -levent_r instead. If you try and use the threaded API without the
      proper link, the library will print an error message and quit.
      4dad8ebe
  33. 05 Mar, 2002 1 commit
  34. 24 Feb, 2002 1 commit
  35. 19 Feb, 2002 1 commit