1. 03 May, 2011 1 commit
    • Mike Hibler's avatar
      Fixes for adding nodes. · 2fb7f5da
      Mike Hibler authored
      Pass -f option to newnodes so it ignores unconnected interfaces.
      Make sure we enter the inner control net IP in new_nodes when !singlenet.
      2fb7f5da
  2. 20 Oct, 2010 1 commit
    • Mike Hibler's avatar
      Support for no shared filesystem (unsupport for shared filesystem?) and · c1c1bce2
      Mike Hibler authored
      (eventual) support for NFS servers without race conditions!
      
      This means no NFS between nodes and ops/fs. There are still NFS mounts of
      ops on boss however.
      
      Added new defs-* variable NOSHAREDFS, which when set non-zero will disable
      the export of NFS filesystems to nodes.  Involved lots of little changes:
      
       * /users, /proj, and /share filesystems are not exported to nodes.
      
       * Returned mount info now includes an FSTYPE key which will be set to "LOCAL"
         if NOSHAREDFS is in effect (by default it is set to "NFS-RACY"; more on
         this later).  In the case where it is set to LOCAL, the other mount lines
         no longer contain REMOTE=foo settings.  Because of this change,
         THE TMCD VERSION NUMBER HAS BEEN BUMPED TO 32.
      
       * The client rc.mounts script will now create local versions of /users/*,
         /proj/<pid>, and /share when FSTYPE=LOCAL.  It first runs mkextrafs to
         create a large partition for these, since someday we will likely want
         to pre-populate these with a non-trivial amount of data.  Right now,
         the only thing that is put in the user's homedir is the standard dotfiles
         for the OS and the Emulab authorized_keys file (so you can login).
      
       * Linktest had to be modified to fetch the various results files (via
         loghole) rather than just assuming they were in /proj.  And also changed
         to invoke tevc with the local copy of the event key so it won't try to
         read it over NFS.
      
       * create_image was modified to ssh to the node and run the imagezip
         command, capturing the output of ssh.  This is controlled via the "-s"
         option which defaults to on for a NOSHAREDFS system, but can also be
         used on a normal system.
      
       * elabinelab's can be configured with/without a shared FS via the
         CONFIG_SHAREDFS attribute (note polarity change) which defaults to 1.
      
      Another new defs-* variable, NFSRACY, will some day allow you to specify
      (by setting to 0) that your NFS server does NOT have the nefarious mountd
      race condition when changing /etc/exports.  Currently, this defaults to 1
      since all versions of FreeBSD supported as an "fs" node have this "feature."
      Rumor has it that FreeBSD 8 does not have this problem nor, presumably,
      would a Linux NFS server.
      
      The only use of this variable right now is to set the FSTYPE returned by the
      tmcd "mounts" call, which in turn is used by one client script, rc.topomap
      (via a libsetup function) to determine whether it should try copying
      the topo file multiple times.
      
      Random: add python2.6 to list of python's checked for in configure.
      Random: resync defs-example-privatecnet with defs-example.
      Random: did a little code-pissin here and there.
      c1c1bce2
  3. 25 Jun, 2010 1 commit
    • Mike Hibler's avatar
      elabinelab fixes. · 3a5bf377
      Mike Hibler authored
      Important: re-map emulab-ops pid/gid indicies in the os_info and images table.
      
      Nit: fix a comment typo ("all I did was change a comment, really!")
      3a5bf377
  4. 14 Apr, 2010 2 commits
    • Mike Hibler's avatar
      Add some useful elabinelab sitevars. · 9bb38c10
      Mike Hibler authored
      New sitevars:
        elabinelab/singlenet     set the system-wide default for cnet implementation
        elabinelab/boss_osid     default OSID for boss node
        elabinelab/ops_osid      default OSID for ops node
        elabinelab/fs_osid       default OSID for fs node
      
      Also mark the various elabinelab/*pkg* sitevars as deprecated.  Package
      versions are just too dependent on the OS running and we almost always
      wind up overriding these sitevars in rc.mkelab anyway.
      9bb38c10
    • Mike Hibler's avatar
      Changes for speeding up elabinelab server setup. · 6feda7d3
      Mike Hibler authored
      Boss/ops/fs: reboot them together after setup rather than serially.
      
      Nodes: leave them in PXEWAIT throughout the setup, until after boss has
      been rebooted.  At that point we send them the new bootinfo RESTART command
      telling pxeboot to re-DHCP and use the new info obtained (next-server) to
      contact a potentially new boss node.  This is a quick way to switch a node
      in PXEWAIT from talking to the outer boss to talking to the inner one.
      
      A significant number of rinky-dink changes were needed to do this, primarily
      adding a new state, PXELIMBO, where nodes can be sent to sit until they are
      restarted.  It turns out, just putting them in an existing state such as
      PXEWAKEUP or SHUTDOWN wouldn't work, as they tend to timeout or otherwise
      reboot.
      6feda7d3
  5. 29 Mar, 2010 1 commit
  6. 22 Mar, 2010 3 commits
  7. 19 Mar, 2010 1 commit
  8. 12 Mar, 2010 2 commits
  9. 05 Jan, 2010 1 commit
  10. 13 Nov, 2009 1 commit
  11. 22 Jan, 2009 1 commit
  12. 11 Nov, 2008 1 commit
  13. 28 Jan, 2008 1 commit
  14. 14 Jan, 2008 1 commit
  15. 02 Aug, 2007 1 commit
  16. 30 Jul, 2007 1 commit
  17. 27 Jul, 2007 1 commit
    • Leigh B. Stoller's avatar
      * Add new tables to store NS files (and any files they source) in the · f8333ef2
      Leigh B. Stoller authored
        DB alongside the resource records. Previously, we stored only the
        nsfiles for current experiments, and purged them when the experiment
        was terminated. The new approach saves them forever using the resource
        record ID. Note that we do not store copies of NS files, but reference
        them indirectly instead so that we can MD5 them and avoid the dups.
      
        I put a "compressed" bit into the table cause at some point we will
        start compressing the data before storing them into the DB. Or maybe
        we bag this and start using GFS!
      
        Also note that this addresses the problem of losing the NS file
        history when using swapmod, since the NS file is overwritten.
      
      * Add a pmapping table stores the nodes (and their types) used by an
        experiment. This data is also saved forever, alongside the resource
        records, so that we can more accurately replay an experiment. As Rob
        points out, the node names can also be used in conjunction with the
        ptop files that are saved, to get a 100% accurate remap of resources.
      f8333ef2
  18. 13 Jul, 2007 1 commit
  19. 12 Jul, 2007 1 commit
    • Russ Fish's avatar
      Check that the inner elab db schema isn't out of date wrt the outer one, · b54ae4da
      Russ Fish authored
        since we import a bunch of dumped db state from the outer to the inner db.
        Added/removed columns in the schema misalign row data, causing much chaos.
      
      tbsetup/elabinelab.in - Dump and send the outer db schema with the db state.
        Runs mysqldump just like schemacheck does.
      
      tmcd/common/config/rc.mkelab - Add the schema check using schemadiff.
      
      utils/schemadiff - Add an option to ignore table creates and drops.
      b54ae4da
  20. 24 Apr, 2007 1 commit
  21. 23 Apr, 2007 1 commit
  22. 13 Mar, 2007 1 commit
  23. 06 Mar, 2007 1 commit
  24. 10 Jan, 2007 1 commit
  25. 01 Dec, 2006 1 commit
  26. 29 Nov, 2006 1 commit
    • Leigh B. Stoller's avatar
      Keith Sklower's changes to support a single control network model for · 08737f67
      Leigh B. Stoller authored
      ElabInElab experiments, so as not to consume an interface.
      
      I actually modified Keith's changes so that we can dynmaically choose
      the single or dual model in the NS file (Keith's changes hardwired the
      system to only single control network) since the single network model
      has the disadvantage of not allowing new nodes to be added to an inner
      elab, which would make it impossible to test some things (like the
      newnode path!).
      
      To choose the single control network model, place this in your NS file:
      
      	tb-elabinelab-singlenet
      
      other it defaults to the older dual network model.
      08737f67
  27. 23 Oct, 2006 1 commit
  28. 20 Oct, 2006 1 commit
    • 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
  29. 19 Jul, 2006 1 commit
  30. 18 Jul, 2006 2 commits
    • Leigh B. Stoller's avatar
      Fix node_type_attributes query ... · 64a69a6c
      Leigh B. Stoller authored
      64a69a6c
    • Leigh B. Stoller's avatar
      Changes necessary for moving most of the stuff in the node_types · 624a0364
      Leigh B. Stoller authored
      table, into a new table called node_type_attributes, which is intended
      to be a more extensible way of describing nodes.
      
      The only things left in the node_types table will be type,class and the
      various isXXX boolean flags, since we use those in numerous joins all over
      the system (ie: when discriminating amongst nodes).
      
      For the most part, all of that other stuff is rarely used, or used in
      contexts where the information is needed, but not for type descrimination.
      Still, it made for a lot of queries to change!
      
      Along the way I added a NodeType library module that represents the type
      info as a perl object. I also beefed up the existing Node module, and
      started using it in more places. I also added an Interfaces module, but I
      have not done much with that yet.
      
      I have not yet removed all the slots from the node_types table; I plan to
      run the new code for a few days and then remove the slots.
      
      Example using the new NodeType object:
      
      	use NodeType;
      
      	my $typeinfo = NodeType->Lookup($type);
      
              if ($typeinfo->control_interface(\$control_iface) ||
                  !$control_iface) {
        	    warn "No control interface for $type is defined in the DB!\n";
              }
      
      or using the Node:
      
      	use Node;
      
              my $nodeobject = Node->Lookup($node_id);
              my $imageable  = $nodeobject->NodeTypeInfo()->imageable();
      or
              my $rebootable = $nodeobject->isrebootable();
      or
              $nodeobject->NodeTypeAttribute("control_interface", \$control_iface);
      
      Lots of way to accomplish the same thing, but the main point is that the
      Node is able to override the NodeType (if it wants to), which I think is
      necessary for flexibly describing one/two of a kind things like switches, etc.
      624a0364
  31. 15 May, 2006 1 commit
  32. 02 Feb, 2006 2 commits
    • Leigh B. Stoller's avatar
      a926c1ff
    • Timothy Stack's avatar
      · 11f6065f
      Timothy Stack authored
      Finish off changes to consult the os_boot_cmd table when setting
      def_boot_cmd_line.
      
      	* db/libdb.pm.in: Add TBGetOSBootCmd function that returns the
      	boot command line for an osid/role.
      
      	* sql/database-fill-supplemental.sql: Add some queries that
      	initialize the os_boot_cmd table.
      
      	* tbsetup/assign_wrapper.in: For nodes that need linkdelays or
      	inner elab boss nodes, set their command line using
      	TBGetOSBootCmd.  Since the TBGetOSBootCmd function needs a "real"
      	OSID to work, we resolve the nextosid for any meta OSIDs.
      
      	* tbsetup/elabinelab.in: Add os_boot_cmd to the list of full
      	tables to be dumped.
      
      	* tbsetup/ns2ir/elabinelab-withfsnode.ns,
      	tbsetup/ns2ir/elabinelab.ns: Remove boot command lines,
      	assign_wrapper does it instead.
      11f6065f
  33. 13 Dec, 2005 1 commit
    • Kirk Webb's avatar
      · cd538454
      Kirk Webb authored
      Remove the hardwired "-1" from an invocation of sshtb
      cd538454
  34. 17 Nov, 2005 1 commit