1. 06 Mar, 2007 1 commit
  2. 10 Jan, 2007 1 commit
  3. 01 Dec, 2006 1 commit
  4. 29 Nov, 2006 1 commit
    • Leigh Stoller's avatar
      Keith Sklower's changes to support a single control network model for · 08737f67
      Leigh 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
  5. 23 Oct, 2006 1 commit
  6. 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
  7. 19 Jul, 2006 1 commit
  8. 18 Jul, 2006 2 commits
    • Leigh Stoller's avatar
      Fix node_type_attributes query ... · 64a69a6c
      Leigh Stoller authored
      64a69a6c
    • Leigh Stoller's avatar
      Changes necessary for moving most of the stuff in the node_types · 624a0364
      Leigh 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
  9. 15 May, 2006 1 commit
  10. 02 Feb, 2006 2 commits
    • Leigh 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
  11. 13 Dec, 2005 1 commit
    • Kirk Webb's avatar
      · cd538454
      Kirk Webb authored
      Remove the hardwired "-1" from an invocation of sshtb
      cd538454
  12. 17 Nov, 2005 1 commit
  13. 19 Oct, 2005 1 commit
  14. 15 Sep, 2005 1 commit
  15. 14 Sep, 2005 1 commit
    • Mike Hibler's avatar
      Changes related to allowing seperate 'fs' (file server) node. · c53d5827
      Mike Hibler authored
      Entailed new instructions for manual setup as well as integration into
      elabinelab framework.  First, the manual path:
      
      setup.txt, setup-boss.txt, setup-ops.txt and new setup-fs.txt:
          Updated to reflect potential for separate fs node.  The org here
          is a little dicey and could be confusing with ops+fs vs. ops and fs.
          Has not been field tested yet.
      
      */GNUmakefile.in: new fs-install target.
      
      configure, configure.in, defs-*:
          Somewhat unrelated, make min uid/gid to use be a defs setting.
          Also add config of fs-install.in script.
      
      boss-install.in, ops-install.in and new fs-install.in:
          Handle distinct fs node.  If you have one, fs-install is run before
          ops-install.  All scripts rely on the defs file settings of FSNODE
          and USERNODE to determine if the fs node is seperate.
      
      utils/checkquota.in:
          Just return "ok" if quotas are not used (i.e., if defs file FS_WITH_QUOTA
          string is null.
      
      install/ports/emulab-fs:
          Meta port for fs node specific stuff.  Also a patch for the samba port
          Makefile so it doesn't drag in CUPs, etc.  Note that the current samba
          port Makefile has this change, I am just backporting to our version.
      
      Elabinelab specific changes:
      
      elabinelab-withfs.ns:
          NS fragment used in conjunction with
      	tb-elab-in-elab-topology "withfs"
          to setup inner-elab with fs node.
      
      elabinelab.ns:
          The hard work on the boss side.  Recognize seperate-fs config and handle
          running of rc.mkelab on that node.  fs setup happens before ops setup.
      
      rc.mkelab:
          The hard work on the client side.  Recognize FsNode setup as well as
          differentiate ops+fs from ops setup.
      
      Related stuff either not part of the repo or checked in previously:
          emulab-fs package
      c53d5827
  16. 07 Sep, 2005 1 commit
    • Mike Hibler's avatar
      Inner-elab role changes: · 88926d1c
      Mike Hibler authored
      	'boss' -> 'boss+router'
      	'ops'  -> 'ops+fs'
      	'fs'      (new role)
      	'router'  (new role)
      
      These are in preparation for allowing configurations with split ops and fs
      nodes (and sometime down the road, split boss and router nodes).
      
      This checkin is just the DB state changes along with the scripts that look
      at that state.  The Big One, which actually sets up separate nodes
      automatically, is undergoing more testing but will be Coming Soon.
      88926d1c
  17. 10 Aug, 2005 1 commit
  18. 31 May, 2005 1 commit
  19. 27 May, 2005 1 commit
    • Leigh Stoller's avatar
      After rebooting inner experimental nodes, force their eventstate to · e1d0181e
      Leigh Stoller authored
      ISUP or else they leave off at SHUTDOWN, which later confuses swapmod
      (tbswap) which waits for them to reach ISUP, but of course they never
      do. This is arguably a misfeature of os_setup, which should probably
      not wait for nodes it didn't reboot, but I want to ponder that change.
      Besides, doing this causes the nodes not to say SHUTDOWN in the web
      interface.
      
      Another change to add there (web interface) is to not say "possibly
      down" for elabinelab nodes.
      e1d0181e
  20. 12 May, 2005 3 commits
    • Leigh Stoller's avatar
      Checkpoint the rest of my changes to support swapmod of both ElabInElab and · 6eff9de6
      Leigh Stoller authored
      Firewalled experiments (see tbsetup/elabinelab.in for the other stuff).
      
      * To support firewalled experiments, needed to add a new virt_firewalls
        table to split the existing firewalls table up, which included both
        virtual and physical stuff. There are the usual frontend changes and a
        few other things scattered around, including tmcd.c.
      
      * The firewall code in tbswap got some beefing up to support adding and
        deleting nodes from the its special control net vlan. Note that I have
        not made any progress on containment of deleted nodes, just as we do not
        do anything now for teardown (unless its paniced, in which case the
        experiment cannot be modified anyway).
      
      * ptopgen and assign_wrapper got some interesting modifications: Unlike
        regular swapmod, we cannot just tear down all the vlans since that would
        interrupt everything inside the inner elab. Instead, leave the vlans as
        is. The problem is that when assign runs, it can just as easily pick
        different interfaces on the same nodes, which would be a royal pain in
        the ass to deal with! So, ptopgen got a new option (-u) that assign
        wrapper uses to tell ptopgen that it should prune out unused interfaces
        from nodes that are already allocated to the experiment. This is, at
        best, as pathetically gross hack, but it makes sure that all the
        interfaces stay the same across swapmods.
      
      * The unrelated revision of elabinelab has a bunch of new code for adding
        and deleting nodes from the inner elab. Mostly it deals with dhcpd (inner
        and outer, waiting for nodes to reboot, etc). It also deals with updating
        the vlans table in the DB, pruning out any nodes (ports) that are deleted
        but for which there are still interfaces in existing vlans. Said ports
        are them moved back to the default vlan with calls to snmpit. Also under
        another revision a a couple of weeks ago are the web interface changes to
        support the newnode MFS inside an inner Emulab.
      
      * swapexp and endexp got some more checks for firewalled and paniced
        experiments, which were missing.
      6eff9de6
    • Leigh Stoller's avatar
      Fix bonehead typo in update query. · 321b4d5d
      Leigh Stoller authored
      321b4d5d
    • Leigh Stoller's avatar
      Part of my changes to support swapmod of ElabInElab experiments. I needed · 283e27fd
      Leigh Stoller authored
      to get this change in cause it also includes some DHCPD conf changes and
      Mike and I were messing each other up.
      
      * The DHCPD change is that instead of using reserved.inner_elab_role
        as the flag to indicate a node should boot inside or outside, I
        added inner_elab_boot, which is a boolean that I set when its
        actually time to do this. This avoids two ElabInElab swapins at the
        same time from messing each other up! Basically avoids the obvious
        race.
      
      * The rest of the changes are for swapmod itself, which are incomplete
        but should be harmless until the rest of the stuff is ready.
      283e27fd
  21. 22 Mar, 2005 1 commit
  22. 09 Feb, 2005 1 commit
  23. 28 Jan, 2005 1 commit
    • Leigh Stoller's avatar
      * Look for latest rc.mkelab in /usr/testbed/etc, but allow override by · b2cb72f0
      Leigh Stoller authored
        looking for /proj/$pid/exp/$eid/rc.mkelab. This file constantly
        changes, so its convenient to just copy it over (since it is the
        script that drives inner emulab creation).
      
      * No longer copy over rc.inelab; let it get installed when the inner
        boss/ops is created, from the testbed source tree that gets copied
        over.
      b2cb72f0
  24. 25 Jan, 2005 1 commit
  25. 19 Jan, 2005 1 commit
    • Leigh Stoller's avatar
      Some changes for Mike and Firewalled ElabInElab experiments. I need · 263e2cb3
      Leigh Stoller authored
      all of the nodes to boot up normally before I can turn them into an
      inner elab (latter, after os_setup). That cannot happen with the
      firewall rules in place. So, when an experiment is firewalled, reorder
      the boot/wait list and wait for the firewall node first. Once that
      hits ISUP, tell the elabinelab code (-f) option so that it can do what
      it needs, which right now means an ssh over to the firewall node to
      temporarily disable all the rules.
      
      We still need to deal with teardown though.
      263e2cb3
  26. 10 Jan, 2005 1 commit
  27. 22 Dec, 2004 1 commit
  28. 21 Dec, 2004 1 commit
  29. 16 Dec, 2004 1 commit
  30. 09 Dec, 2004 1 commit
    • Leigh Stoller's avatar
      When the elabinelab experiment is also firewalled, ssh into the · 12c44d00
      Leigh Stoller authored
      firewall node and disable the rules during the inner elab setup, and
      then turn them back on after the inner boss has rebooted. In the case
      that an experiment is to be launched inside, launch the experiment
      async and then turn rules back on. Technically, this should be proxied
      through the firewall instead of directly, but this is okay for now.
      
      As for experiment teardown, I am not doing anything yet since the
      closed firewall lets ssh through, and thats all I need to teardown the
      inner elab.
      
      Also during teardown, if DHCPD cannot be killed on inner boss, then
      skip rest of the steps and return okay so that the rest of experiment
      teardown proceeds (if need be, inner nodes will be power cycled). Not
      being be able to kill DHCPD can happen for lots of reasons (like,
      experiment never setup in the first place).
      12c44d00
  31. 07 Dec, 2004 1 commit
    • Leigh Stoller's avatar
      * After rebooting the inner nodes, ssh into the inner boss and run · dd3b8989
      Leigh Stoller authored
        utility script to wait for them to reboot and reach PXEWAIT. This
        indicates inner emulab is raelly ready
      
      * When an inner experiment is defined (elabinelab_eid in experiments
        table) fire that experiment off by doing an ssh into inner boss. I
        am currently doing this with -w (wait mode) but eventually will need
        to do it async for experiments in which the control net is turned
        off. Also, not actually swapping experiment in yet since multicast
        and frisbee are still broken inside.
      
      * Add -k mode for cleaning up. The intent of this is to avoid power
        cycling all the nodes cause outer elab cannot reboot or ipod them.
        Goes like this:
      
        * Clear the inner_elab_role for experiment's nodes from the reserved
          table.
      
        * Clear def_boot_osid,next_boot_osid,temp_boot_osid for nodes. This
          is bogus cause os_select whines about doing this, but the point is
          to make sure that all nodes will go into PXEWAIT when they reboot.
          We could have them go into MFS, but thats bound to cause problems
          if inner elab has a lot of nodes (remember, cannot trust what is
          on disk). This needs more thought.
      
        * Regen and restart outer dhcpd. Nodes will become part of outer
          emulab on next boot cycle.
      
        * SSH into inner boss and kill inner DHCPD so that there will not be
          any DHCPD responses on inner control network.
      
        * SSH into inner boss and have it reboot all inner nodes.
      
        * Wait for node to reach PXEWAIT.
      
        The above needs more thought wrt firewalled experiments and isolated
        control network.
      
      * Kill off some old MFS copy code since we now get those direct from
        website.
      dd3b8989
  32. 01 Dec, 2004 2 commits
  33. 17 Nov, 2004 2 commits
  34. 15 Nov, 2004 1 commit
    • Leigh Stoller's avatar
      A bunch of ElabInELab changes. · 10b116e0
      Leigh Stoller authored
      * snmpit: When ElabInELabis true, use the routines in the new
        snmpit_remote.pm library for setting up and tearing down vlans for an
        experiment. At present, only these two operations are proxied out to
        the outer emulab.
      
      * snmpit_remote.pm: A new little library that uses the XMLPRC server on
        the outer emulab to setup and destroy vlans for an inner experiment.
        This code is used from snmpit (see above).
      
      * snmpit_lib.pm: A couple of minor changes for the server side of the
        proxy operation.
      
      * snmpit.proxy.in: A new perl module that is invoked from the RPC
        server.  This proxy sets up and tears down vlans for an inner elab.
        The basic model is that the container experiment will have lots of
        vlans for various individual experiments running on the inner emulab.
      
      * swapexp: A couple of minor elabinelab hacks.
      
      * tbswap: For elabinelab experiments, reconfig/restart dhcpd when
        tearing down the experiment, and call out to new elabinelab script
        when setting up an elabinelab experiment. There is no provision for
        swapmod at this time.
      
      * elabinelab: A new script to create the inner emulab. Does all kinds of
        gross DB stuff then more gross stuff on the inner ops and boss.
      10b116e0