1. 31 Jan, 2017 1 commit
    • Mike Hibler's avatar
      More tweaks to frisbee heartbeat code. · df78b7ef
      Mike Hibler authored
      Make sure server doesn't exit as long as it is getting heartbeats
      from known clients. We used to exit when we stopped getting requests,
      however clients often finish their network activity long before they
      are actually done.
      
      Emulab event now reports Mebibytes rather than bytes. It is accurate
      enough and avoids perl bigints in the receiver(s).
      df78b7ef
  2. 19 Jan, 2017 1 commit
  3. 29 Aug, 2016 1 commit
  4. 27 Jan, 2016 1 commit
  5. 24 Sep, 2012 1 commit
    • Eric Eide's avatar
      Replace license symbols with {{{ }}}-enclosed license blocks. · 6df609a9
      Eric Eide authored
      This commit is intended to makes the license status of Emulab and
      ProtoGENI source files more clear.  It replaces license symbols like
      "EMULAB-COPYRIGHT" and "GENIPUBLIC-COPYRIGHT" with {{{ }}}-delimited
      blocks that contain actual license statements.
      
      This change was driven by the fact that today, most people acquire and
      track Emulab and ProtoGENI sources via git.
      
      Before the Emulab source code was kept in git, the Flux Research Group
      at the University of Utah would roll distributions by making tar
      files.  As part of that process, the Flux Group would replace the
      license symbols in the source files with actual license statements.
      
      When the Flux Group moved to git, people outside of the group started
      to see the source files with the "unexpanded" symbols.  This meant
      that people acquired source files without actual license statements in
      them.  All the relevant files had Utah *copyright* statements in them,
      but without the expanded *license* statements, the licensing status of
      the source files was unclear.
      
      This commit is intended to clear up that confusion.
      
      Most Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the Affero GNU General Public License, version 3
      (AGPLv3).
      
      Most Utah-copyrighted files related to ProtoGENI are distributed under
      the terms of the GENI Public License, which is a BSD-like open-source
      license.
      
      Some Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the GNU Lesser General Public License, version 2.1
      (LGPL).
      6df609a9
  6. 27 Jul, 2011 1 commit
  7. 19 Jul, 2011 1 commit
  8. 25 May, 2007 1 commit
  9. 23 Apr, 2007 1 commit
  10. 26 Mar, 2007 1 commit
  11. 17 Feb, 2007 1 commit
  12. 04 Dec, 2006 1 commit
  13. 18 Apr, 2006 2 commits
    • Kirk Webb's avatar
      · fb37c449
      Kirk Webb authored
      Look at "SCHEDULER" attribute to get most everything.
      fb37c449
    • Kirk Webb's avatar
      · e219aa4d
      Kirk Webb authored
      Added silly little program to dump the set of subscriptions registered
      on an elvind server.  Uses the "quench" feature to grab this set.  Note
      that there is no way to just ask for everything, you have to specify the
      subscription attribute you are interested in.  However, since the testbed
      elvin library wrapper always adds certain fields, just asking for one of
      these almost certainly gets you everything you are looking for.  The only
      exception (missed items) would be custom subscriptions created directly
      via the elvin library that do not include one of these common fields.  I
      don't think such subscriptions are ever created in practice.
      e219aa4d
  14. 27 Mar, 2006 1 commit
    • Kirk Webb's avatar
      · 74fc532b
      Kirk Webb authored
      Some event system fixes for the plab proxy and testing enhancements to tbsend.
      
      * event.c / event.h
      
      Fix assertion failure that appears to be caused by notifications coming in
      on a subscription that is pending deletion (via async API call).
      
      Also add idle polling to the ops endpoint connection to help maintain
      connectivity (will do failover).
      
      Add function to set failover flag on connection handle.
      
      * tbsend.c
      
      Add ability to set connection retry, failover, idle polling, and perform
      looped and triggered testing.
      74fc532b
  15. 30 Aug, 2004 1 commit
    • Leigh Stoller's avatar
      The bulk of the event system changes. · 9aa6b5ca
      Leigh 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
  16. 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
  17. 21 Jun, 2004 1 commit
  18. 05 Nov, 2003 1 commit
    • Leigh Stoller's avatar
      Middle part of the event system changes. The main part of this change · 54bc15c4
      Leigh 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
  19. 16 Oct, 2003 2 commits
  20. 27 Feb, 2003 1 commit
    • Robert Ricci's avatar
      Add a blocking poll, event_poll_blocking(), to the event library. · b6cf32b8
      Robert Ricci authored
      Note the following: (from the API file)
        IMPORTANT: elvin uses timeouts internally. So, this function does
        NOT guarantee that when it returns, either an event has been
        recieved or your timeout has passed. This should not be much of
        a problem, but you have been warned!
      
      The above is not really fixable, without hacking elvin. And it may
      not be entirely fixable even then. In particular, the first call to
      event_poll_blocking() will always return at once, since there are
      leftover timers from connecting to elvind.
      b6cf32b8
  21. 01 Apr, 2002 1 commit
    • Robert Ricci's avatar
      New perl event system functions: EventSend{,Warn,Fatal}() These · e58adf16
      Robert Ricci authored
      basically work like the libdb.pm functions of the same name (and in
      fact much of the code was stolen from there.)
      
      Provides a simple single function call to send events. Intended for
      use in scripts whose primary purpose is _not_ to interface with the
      event system, like power and node_reboot. If more control/efficiency
      is required (for example, these functions reconnect to the event
      system every time they're called) , it's better to use the C-like API.
      
      Example call:
      EventSendFatal(objtype   => "TBEXAMPLE",
                     eventtype => $ARGV[0],
                     host      => "*" );
      e58adf16
  22. 29 Mar, 2002 1 commit
    • Robert Ricci's avatar
      Remove SWIG from the build process - unfortunately, it's slightly · 8ffb8cf4
      Robert Ricci authored
      broken. Also, it made me slightly uneasy that there was no way to
      prevent swig from putting one of its generated files in sorce
      directory. So, I've just checked in the two major files that get
      generated by SWIG, so that the make rule that runs it never gets
      invoked.
      
      One of the reasons for doing this is that swig generates slightly
      broken code when the -exportall (which does perl module exports
      correctly) arugment is given. A very minor amount of manual tweaking
      of the generated .pm file can fix this problem. So, the checked in
      copy of event.pm has these tweaks applied.
      
      As a result of all of this, exports work correctly in the event perl
      module, so the hacky practice of putting your program in the event
      namespace is no longer necessary.
      8ffb8cf4
  23. 25 Mar, 2002 1 commit
    • Robert Ricci's avatar
      Perl module for the event system. · 53955f50
      Robert Ricci authored
      This is accomplished with SWIG, so that we can basically just call the
      C functions from perl, and avoid a parllel implementation. Some glue
      code is required, particularly for callbacks, macros, and functions
      that return data through arguments.
      
      Currently lacks support for a few functions, but is functional enough
      to re-write the example C programs.
      53955f50
  24. 07 Mar, 2002 1 commit
    • Leigh Stoller's avatar
      Isolate the pain of building threaded (and statically linked) event · 4dad8ebe
      Leigh 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
  25. 05 Mar, 2002 1 commit
  26. 04 Mar, 2002 1 commit
  27. 26 Feb, 2002 1 commit
  28. 24 Feb, 2002 1 commit