Skip to content
  • David Johnson's avatar
    Let experimenters customize prepare, and interface and hosts file setup. · dd4c67d0
    David Johnson authored
    The prepare script now supports pre and post hooks.  It runs all hooks
    in rc order, from the DYNRUNDIR/prepare.pre.d and BINDIR/prepare.pre.d
    dirs (rc order in this case is the BSD order, or my version of it ---
    any file prefixed with a number is run in numeric order; other files are
    run sorted alphabetically following numeric files).  Post hooks are in
    prepare.post.d, and are run at the end of prepare.
    
    (DYNRUNDIR is always /var/run/emulab .  STATICRUNDIR is usually
    /etc/emulab/run but could be /etc/testbed/run, depending on the
    clientside installation.)
    
    We now allow users to override our default interface configuration --
    and if they do, and tell us about it by writing a file in either
    $DYNRUNDIR or $STATICRUNDIR named interface-done-$mac , we will not
    attempt to configure it, and will assume they have done it!  If they are
    nice to us and write
      $iface $ipaddr $mac
    into the file, we will parse that and put it into the @ifacemap and
    %mac2iface structures in doboot().  We do *not* attempt to provide them
    the ifconfig info in env vars or anything; they have to grok our
    ifconfig file format, in all its potential glory.
    
    We read the hosts.head file(s) from /etc, DYNRUNDIR, and STATICRUNDIR,
    and prepend them to our Emulab hosts content.  Then, we append the
    content of the hosts.tail file(s) from /etc, DYNRUNDIR, and STATICDIR
    --- and that file becomes the new /etc/hosts file.
    
    getmanifest() has become getrcmanifest() to avoid confusion with the
    GENI manifest.  Also, it now supports local manifests embedded in the
    filesystem from $DYNRUNDIR and $STATICRUNDIR (priority is manifest from
    exp, then DYNRUNDIR, then STATICRUNDIR).  All manifests read and
    applied.  Local manifests may also reference local files instead of blob
    ids, of course.  It is important to support local manifests so that
    experimenters can hook our services by default in the disk image.
    dd4c67d0