1. 03 May, 2016 1 commit
  2. 28 Apr, 2016 1 commit
  3. 30 Jan, 2015 1 commit
  4. 09 Jan, 2015 1 commit
  5. 05 Jan, 2015 1 commit
    • Kirk Webb's avatar
      Enforce permissions for dataset leases at mapping time. · bedcb609
      Kirk Webb authored
      * Swapper must have appropriate level of access (RO or RW).
      * If RO is requested, dataset must not be in use RW.
      * If RW is requested, dataset must not be in use at all.
      
      Also relaxed the checks in the parser; it was considering dynamic lease
      state, which isn't the right thing to do there.
      bedcb609
  6. 29 Dec, 2014 1 commit
  7. 01 Jul, 2014 1 commit
  8. 16 Jan, 2014 1 commit
    • Mike Hibler's avatar
      (Partially) add ability to specify read-only datasets. · 7e3e82cc
      Mike Hibler authored
      1. Add set-readonly method to a NS blockstore object.
      2. Make sure that dataset blockstores (leases) in the 'grace' state can
         *only* be accessed read-only.
      
      What has not been done yet is to pass the attribute to the storage server
      and client so they can actually enact read-only-ness.
      7e3e82cc
  9. 03 Jan, 2014 1 commit
  10. 11 Dec, 2013 1 commit
    • Mike Hibler's avatar
      The parser-side of persistent blockstore support. · 09177fb2
      Mike Hibler authored
      In parse-ns, we generate a list of accessible blockstores and put that in
      the .input file. The accessiblity check right now is just that the blockstore
      (actually lease) pid must match that of the experiment. This needs to be
      generalized.
      
      The blockstore set-lease command verifies that the asked-for lease matches
      one of those accessible blockstores. If it does, it make sure the correct
      size and other info wind up in the virt_blockstores table. Less obviously,
      but of critical importance, it emits a "lease" virt_blockstore_attribute
      with the correct lease index. This attributes gets converted into the
      desire that is added by vtopgen to the .vtop file.
      09177fb2
  11. 30 Oct, 2013 1 commit
  12. 11 Apr, 2013 1 commit
  13. 12 Oct, 2012 1 commit
  14. 11 Oct, 2012 1 commit
  15. 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
  16. 29 Nov, 2011 1 commit
  17. 11 Oct, 2011 1 commit
    • Leigh B Stoller's avatar
      More work on image permissions; allow specification of pid/osname in · cfc9612a
      Leigh B Stoller authored
      NS files. Tweak permission check in Geni CM to also allow this,
      although at this time only global images from any project are allowed.
      The virt_nodes table has been changed to accommodate pid/osname
      syntax:
      
      	tb-set-node-os $nodeA somepid/someos
      
      Note: we are really exporting permission to use images, not entries in
      the os_info table (OSIDs) which is what the NS parser and protogeni CM
      are using. But in fact, an image is both an image descriptor and an OS
      descriptor linked together, so if you export an image or make it
      global, you are implicitly doing the same for the OS descriptor. As
      mentioned many times in the past, OSIDs suck.
      cfc9612a
  18. 07 Jun, 2011 1 commit
  19. 04 Apr, 2011 1 commit
    • David Johnson's avatar
      Add client side service and service hook configuration commands. The · 25711c9c
      David Johnson authored
      valid service/env/whence tuples are specified in the client_services
      table.  Only services that exist in that table can be configured -- so
      if rc.ifconfig is only configurable at boot, every time, the user can
      only add hooks (or control the service) for rc.ifconfig at boot, every
      time (so not in the load env, nor only once).
      
      Users can either specify a script that gets turned into a per-experiment
      blob, OR they can specify a static blob that they already created in the
      blobs table via mkblob.  They can't do both though.
      
      tb-set-node-service "rc.foo" \
          -node (""|$node) -env (boot|load) -whence (every|first) \
          -script "/path/to/script" -scriptblob "<blobid>" \
          -enable (0|1) -enablehooks (0|1) -fatal (0|1)
      
      All options are "optional".  Even if you disable a service, its hooks
      are enabled by default.  Services can now be fatal.
      
      tb-add-node-service-hook "rc.foo" \
          -node (""|$node) -env (boot|load) -whence (every|first) \
          -script "/path/to/script" -scriptblob "<blobid>" \
          -op (boot|shutdown|reconfig|reset) -point (pre|post) \
          -argv "" -fatal (0|1)
      25711c9c
  20. 20 Oct, 2010 1 commit
  21. 29 Sep, 2010 1 commit
    • Kevin Atkinson's avatar
      Detect when the NS parser crashed via the signal in parse.proxy and · 44d56444
      Kevin Atkinson authored
      send back an exit code with the signal embedded (128 + signal) so that
      the boss end can detect that the parser failed.  If the signal is due
      to to crash (other than SIGABRT, as that is likely due due to running
      out of memory) than email testbed-ops.
      
      Also remove the email to testbed-ops when the parser exceeded the CPU
      Limit.
      44d56444
  22. 15 Apr, 2010 1 commit
  23. 14 Apr, 2010 1 commit
    • 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
  24. 22 Mar, 2010 1 commit
  25. 03 Feb, 2010 1 commit
  26. 28 Jan, 2010 1 commit
  27. 22 Jan, 2010 1 commit
  28. 12 Oct, 2009 2 commits
    • David Johnson's avatar
      Whoops, fix silly query. · 984379c6
      David Johnson authored
      984379c6
    • David Johnson's avatar
      Add the ability to load images on virtnodes. For now, we just overload · c6c57bc9
      David Johnson authored
      the tb-set-node-os command with a second optional argument; if that is
      present, the first arg is the child OS and the second is the parent OS.
      We add some new features in ptopgen (OS-parentOSname-childOSname) based
      off a new table that maps which child OSes can run on which parents, and
      the right desires get added to match.  We setup the reloads in os_setup
      along with the parents.  Also needed a new opmode, RELOAD-PCVM, to handle
      all this.
      
      For now, users only have to specify that their images can run on pcvms, a
      special hack for which type the images can run on.  This makes sense in
      general since there is no point conditionalizing childOS loading on
      hardware type at the moment, but rather on parentOS.  Hopefully this stuff
      wiill mostly work on shared nodes too, although we'll have to be more
      aggressive on the client side garbage collecting old frisbee'd images for
      long-lived shared hosts.
      
      I only made these changes in libvtop, so assign_wrapper folks are left in
      the dark.
      
      Currently, the client side supports frisbee.  Only in openvz for now, and
      this probably breaks libvnode_xen.pm.  Also in here are some openvz
      improvements, like ability to sniff out which network is the public
      control net, and which is the fake virtual control net.
      c6c57bc9
  29. 25 Sep, 2008 1 commit
  30. 02 Aug, 2007 1 commit
  31. 06 Mar, 2007 1 commit
  32. 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
  33. 03 Oct, 2006 1 commit
    • Leigh B. Stoller's avatar
      Two small changes. · 89c9208b
      Leigh B. Stoller authored
      * Copy template datastore to instance "datastore" directory, instead of
        "template_datastore" ... avoid mass confusion.
      
      * Change xxx:// mappping from template datastore to the instance datastore.
      89c9208b
  34. 20 Sep, 2006 1 commit
    • Leigh B. Stoller's avatar
      By popular demand, you can now force a swap modify to be done when · b9161642
      Leigh B. Stoller authored
      doing a Start Run. On the web page, there is a new checkbox, and
      on ops, template_startrun takes a new -m option.
      
      Caveat: You cannot specify a new NS file, yet. The original file is
      reparsed, and the idea is that a change in the template parameters
      will result in a change to the topology. I will add the ability to
      specify a new NS file in the next revision of this change.
      
      If you really really want to change the NS file, go to
      /proj/$pid/exp/$eid/archive/nsdata and edit nsfile.ns ...
      
      In addtion, DATASTORE is now defined while parsing the NS file. This
      turned to be quite the headache!
      b9161642
  35. 16 Aug, 2006 1 commit
    • Kevin Atkinson's avatar
      - Added tbreport database schema (added three tables), storage for · 9c5d3308
      Kevin Atkinson authored
        tbreport errors & context.
      
      - Modified fatal() in swapexp, batchexp, and tbprerun, and die_noretry()
        in os_setup to pass hash parameter to tblog functions.
      
      - Added tbreport errror & context information for select errors in
        swapexp, tbswap, assign_wrapper2, snmpit_lib, snmpit, batchexp,
        assign_wrapper, os_setup, parse-ns, & tbprerun.
      
      - Added assign error parser in assign_wrapper2.
      
      - Added parse.tcl error parser in parse-ns.
      
      - Added severity constants for tbreport in libtblog_simple.
      
      - Added tbreport() function & context table mappging for reporting
        discrete error types to libtblog.
      9c5d3308
  36. 18 Jul, 2006 1 commit
    • 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
  37. 28 Jun, 2006 1 commit
  38. 31 Mar, 2006 1 commit
    • Leigh B. Stoller's avatar
      More experiment run stuff. Also the NS file parsing support that was · 74bf8d1d
      Leigh B. Stoller authored
      needed (reparsing of NS file with current bindings).
      
      Mostly I decided that I made a huge mistake in using the exptidx as the
      main cross index. I started to change that, which took a bunch of time.
      Still more tables to fix up, but I think all of this code is gonna need
      a major reorg once I am no longer under the gun to get it done.
      74bf8d1d
  39. 09 Feb, 2006 1 commit