1. 06 Mar, 2007 1 commit
  2. 23 Feb, 2007 1 commit
  3. 22 Feb, 2007 1 commit
  4. 17 Feb, 2007 1 commit
  5. 02 Feb, 2007 1 commit
    • Mike Hibler's avatar
      The paint wasn't even dry on the last plab tarball before I have moved on... · c2570cfc
      Mike Hibler authored
      Rev 20 of the tarball has no new function, it is just slimmed down.
      I replaced our large statically linked binaries with dynamically linked ones.
      Also found and stripped a couple of other binaries.
      
      The resulting tarball goes from 5.7MB to 0.9MB.
      
      The Makefile changes are to incorporate the NOSTATIC=1 environment hack
      to enable building the dynamic binaries above.
      c2570cfc
  6. 01 Feb, 2007 2 commits
    • Mike Hibler's avatar
      In remote mode, don't limit the number of attempts to connect to the server. · 782b9dc9
      Mike Hibler authored
      This causes program agents to become isolated and marginalized, in short,
      unresponsive to the needs of Emulab.  It is now a Loyal Emulab Soldier,
      attempting reconnects til the end of time if necessary.
      
      I left in the "keep alive" (idle timeout) since it doesn't seem to be causing
      any problems.
      782b9dc9
    • Mike Hibler's avatar
      Nits with creation of /local/logs: · 12eeba9a
      Mike Hibler authored
       * if we have to create it, make sure to re-stat so that following
         /uid/gid/mode checks are legit
       * change the own/group if either of own/group are wrong
      12eeba9a
  7. 09 Jan, 2007 1 commit
  8. 21 Dec, 2006 1 commit
  9. 15 Dec, 2006 1 commit
    • Mike Hibler's avatar
      Attempt to reconcile the definition of some program-agent environment · 448e377b
      Mike Hibler authored
      variables on cluster and plab nodes.
      
      NODECNET (new)
      The fully-qualified (Emulab) name of the node this program agent is running on.
      This name resolves to the IP address of the control network interface
      of the node.
      
      NODECNETIP (new)
      The IP address of the control network interface.
      This address should not be advertised to, or used by, applications
      within an experiment as it will cause all traffic to flow over the control
      network rather than the experimental network.
      
      NODE
      The unqualified name of the node this program agent is running on.
      For nodes with experimental interfaces,
      this name resolves to the IP address of an experimental interface on the node.
      For nodes with more than one experimental interface,
      there is no guarantee which one it will resolve to.
      For nodes with no experimental interfaces,
      the name will not resolve.
      
      NODEIP
      The IP address of the experiment network interface that NODE resolves to.
      For nodes with no experimental interfaces, this variable will not be set.
      448e377b
  10. 07 Dec, 2006 2 commits
    • Kevin Atkinson's avatar
      · e00405bd
      Kevin Atkinson authored
      Removed duplicate declaration of make_timestamp in event-sched.h (also
      declared in util.h).
      e00405bd
    • Kevin Atkinson's avatar
      · 6703712b
      Kevin Atkinson authored
      Change timestamp output of event-sched to something human readable.
      
      Also add a small amount of debug output to "$ns report" to help me
      track down why it is being called at seemingly random places.
      6703712b
  11. 04 Dec, 2006 1 commit
  12. 01 Dec, 2006 3 commits
  13. 30 Nov, 2006 1 commit
  14. 13 Nov, 2006 1 commit
    • Kevin Atkinson's avatar
      · dbb62c05
      Kevin Atkinson authored
      Add "-archive <bool>" to $ns report which controls if "loghole
      archive" is called.  Creating the archive zipfiles is redundant when
      using the workbench.  It only serves to wastes space (and time when
      committing then to the experiment archive).
      dbb62c05
  15. 10 Nov, 2006 1 commit
  16. 25 Oct, 2006 1 commit
    • Leigh Stoller's avatar
      Makefile Whacking! Try to deal with the problem caused by the delay · 7590f9c5
      Leigh Stoller authored
      between when something is installed and when post-install runs. Short
      of a global lock (which we probably need anyway someday), my solution
      is this. In your makefiles, add these variables before the line that
      has the include of $(TESTBED_SRCDIR)/GNUmakerules:
      
      	SETUID_BIN_SCRIPTS   =
      	SETUID_SBIN_SCRIPTS  =
      
      I have added three new rules to GNUmakerules that look like this:
      
      	$(addprefix $(SBINDIR)/, $(SETUID_SBIN_SCRIPTS)): $(SBINDIR)/%: %
      		echo "Installing (setuid) $<"
      		-mkdir -p $(INSTALL_SBINDIR)
      		$(SUDO) $(INSTALL) -o root -m 4755 $< $@
      
      Yep, your eyes ain't lying to you; use sudo to run the target so that
      install does the right thing (which is that the old file is not
      replaced until the new one has the proper attributes on it).
      
      Note that post-install is still needed for the initial install, but
      should no longer be needed for day to day installs since all that other
      stuff post-install does is mkdir/chmod on directories.
      7590f9c5
  17. 23 Oct, 2006 1 commit
  18. 20 Oct, 2006 4 commits
    • Mike Hibler's avatar
      Oh crap #2: typo in configure variable · b228e982
      Mike Hibler authored
      b228e982
    • Mike Hibler's avatar
      Fix logic bug that has been around a while · 6326c690
      Mike Hibler authored
      6326c690
    • Mike Hibler's avatar
      Ah crap #1. Typo in configure variable. · 6aae280b
      Mike Hibler authored
      6aae280b
    • Mike Hibler's avatar
      Wow, this should make me look important! · afa5e919
      Mike Hibler authored
      Two-day boondoggle to support "/scratch", an optional large, shared filesystem
      for users.  To do this, I needed to find all the instances where /proj is used
      and behave accordingly.  The boondoggle part was the decision to gather up all
      the hardwired instances of shared directory names ("/proj", "/users", etc.)
      so that they are set in a common place (via unexposed configure variables).
      This is a boondoggle because:
      
      1. I didn't change the client-side scripts.  They need a different mechanism
         (e.g., tmcd) to get the info, configure is the wrong way.
      
      2. Even if I had done #1 it is likely--no, certain--that something would
         fail if you tried to rename "/proj" to be "/mike".  These names are just
         too ingrained.
      
      3. We may not even use "/scratch" as it turns out.
      
      Note, I also didn't fix any of the .html documentation.  Anyway, it is done.
      To maintain my illusion in the future you should:
      
      1. Have perl scripts include "use libtestbed" and use the defined PROJROOT(),
         et.al. functions where possible.  If not possible, make sure they run
         through configure and use @PROJROOT_DIR@, etc.
      
      2. Use the configure method for python, C, php and other languages.
      
      3. There are perl (TBValidUserDir) and php (VALIDUSERPATH) functions which
         you should call to determine if an NS, template parameter, tarball or
         other file are in "an acceptable location."  Use these functions where
         possible.  They know about the optional "scratch" filesystem.  Note that
         the perl function is over-engineered to handles cases that don't occur
         in nature.
      afa5e919
  19. 10 Oct, 2006 1 commit
  20. 03 Oct, 2006 1 commit
  21. 26 Sep, 2006 1 commit
  22. 14 Sep, 2006 6 commits
  23. 13 Sep, 2006 2 commits
  24. 12 Sep, 2006 1 commit
    • Leigh Stoller's avatar
      This started out as a simple little hack to add a StopRun "ns" event, but · cbdc4178
      Leigh Stoller authored
      it got more complicated as it progressed.
      
      The bulk of the change was changing template_exprun so that it can take a
      pid/eid as an alternative to eid/guid. This is a big convenience since its
      easy to find the template from a running experiment, and it makes it
      possible to invoke from the event scheduler, which has never heard of a
      template before (and its not something I wanted to teach it about).  Its
      also easier on users.
      
      Anyway, back to the stoprun event. You can now do this:
      
      	$ns at 100 "$ns stoprun"
      or
      	tevc -e pid/eid now ns stoprun
      
      You can add the -w option to wait for the completion event that is sent,
      but this brings me to the glaring problems with this whole thing.
      
      * First, the scheduler has to fire off the stoprun in the background,
        since if it waits, we get deadlock. Why? Cause the implementation of
        stoprun uses the event system (SNAPSHOT event, other things), and if
        the scheduler is sitting and waiting, nothing happens.
      
        Okay, the solution to this was to generate a COMPLETION event from
        template_exprun once the stop operation is complete. This brings me
        to the second problem ...
      
      * Worse, is that the "ns" events that are sent to implement stoprun (like
        snapshot) send their own completion events, and that confuses anyone
        waiting on the original stoprun event (it returns early).
      
        So what to do about this? There is a "token" field in the completion
        event structure, which I presume is to allow you to match things up.  But
        there is no way to set this token using tevc (and then wait for it), and
        besides, the event scheduler makes them up anyway and sticks them into
        the event. So, the seed of a fix are already germinating in my mind, but
        I wanted to get this commit in so that Mike would have fun reading this
        commit log.
      cbdc4178
  25. 10 Sep, 2006 1 commit
    • Leigh Stoller's avatar
      The bulk of this commit adds the ability to run the program agent on ops · e8bb6bca
      Leigh Stoller authored
      so that users can schedule program events to run there. For example:
      
      	set myprog [new Program $ns]
      	$myprog set node "ops"
      	$myprog set command "/usr/bin/env >& /tmp/foo"
      
      	$ns at 10 "$myprog start"
      or
      	tevc -e pid/eid now myprog start
      
      Since the program agent cannot talk to tmcd from ops, there are new
      routines to create the config files that the program agent uses, in
      the expertment tbdata directory.
      
      I also rewrote the eventsys.proxy script that starts the event
      scheduler on ops; I rolled the startup of the program agent into this
      script, via new -a option which is passed over from boss when an ops
      program agent is detected in the virt topology. This keep the number
      of new processes on ops to a small number.
      
      Also part of the above rewrite is that we now catch when event
      scheduler (or the program agent) exits abnormally, sending email to
      tbops and the swapper of the experiment. We have been seeing abnormal
      exits of the scheduler and it would good to detect and see if we can
      figure out what is going wrong.
      
      Other small bug fixes in experiment run.
      e8bb6bca
  26. 07 Sep, 2006 1 commit
  27. 06 Sep, 2006 1 commit
    • Leigh Stoller's avatar
      Okay, this is a nasty little hack ... Add support for a global delays · d4881005
      Leigh Stoller authored
      reset. I've done this with an event group cause otherwise I was going
      to get sucked into the event system and spit out the other end. You can
      reset the delays in your experiment either from the ns file:
      
      	$ns at 100 "$ns reset-lans"
      
      or from the command line:
      
      	tevc -e foo/bar now all_lans reset
      
      and yes, "all_lans" is a magic token.
      
      It would be nice to support per-link or lan reset, but that is going
      to require reorganizing the delay start up scripts on the delay nodes,
      since right now a single delay agent operates for muliple links and lans.
      d4881005