1. 23 Mar, 2007 1 commit
  2. 22 Mar, 2007 1 commit
  3. 01 Mar, 2007 1 commit
    • Leigh Stoller's avatar
      A change for Dave that we discussed a couple of months back and · 01cb437a
      Leigh Stoller authored
      yesterday Dave said he needs it now.
      
      Currently the accounts that are returned to ron nodes are determined
      by looking for the node type in the pcremote_ok slot of the projects
      table. There is no per-user subgroup setting; everyone gets the group
      of their project.
      
      Dave needs to be able to assign remote users to specific subgroups
      within a variety of projects, and I did not want to hack up the
      pcremote_ok mechanism any further. So, new way to do this, that might
      replace pcremote_ok at some point, but for now will just override it.
      
      I am using the node_attributes table to drive what groups get
      installed, and thus what users get accounts and a grouplist.
      
      	inset into node_attributes values
      	           ('ronXXX', "dp_projects", "10000,10001,...");
      
      where the group list is specified as a list of gid_idx's. This works
      out very nicely cause I can use a subquery and FIND_IN_SET clause, and
      so the changes to tmcd where actually pretty easy.
      01cb437a
  4. 19 Feb, 2007 1 commit
  5. 16 Feb, 2007 1 commit
    • Mike Hibler's avatar
      Hackery to make sure that Plab slices always have boss/ops in their hosts · 7d7c0999
      Mike Hibler authored
      file: we return info for boss/ops in the "hostnames" command, but only if
      the command would have otherwise returned something.
      
      This is because the default hosts file we distribute in the rootball already
      has boss/ops in it.  But if, during bootup, tmcd returns hostname info, that
      hosts file gets overwritten and boss/ops info gets lost.
      
      I could just grep out the info from the original hosts file and transfer it
      to the one we are building, but what do I grep for: "boss", "ops",
      "emulab.net"?  Don't really want to hardwire any of those in the client-side
      script.
      
      By returning this info via tmcd, I also don't have to modify the client-side
      and thus don't need to build a new rootball!
      7d7c0999
  6. 10 Jan, 2007 1 commit
  7. 09 Jan, 2007 1 commit
    • Mike Hibler's avatar
      Modify LOADINFO command to include ACPI info for FreeBSD images. · 789aedba
      Mike Hibler authored
      node_type_attributes can now include a row with attrkey=use_acpi which can
      either be set to:
      
        '1', if the FreeBSD image absolutely must use ACPI on this node_type
             in order to boot (e.g., our Dell SC440 machine)
      
        '0', if the FreeBSD image absolutely must NOT use ACPI on the node_type
             in order to boot (e.g., our pc2000s, possibly due to the IXP cards).
      
      Otherwise, just don't set this attribute.
      
      This value is queried by rc.frisbee and passed to slicefix after the disk
      is loaded so that it can change /boot/loader.conf to enable/disable ACPI.
      
      Note that ACPI (or lack thereof) has never been an issue with Linux or
      Windows, so this is only meaningful to FreeBSD >= 5.0.
      
      Note also that this does nothing for MFSes.  On machines that must use ACPI,
      you need to use a special MFS for that node type (set via 'adminmfs_osid'
      and 'diskloadmfs_osid' node_type_attributes).
      789aedba
  8. 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
  9. 27 Oct, 2006 1 commit
    • Mike Hibler's avatar
      Semi-hack: for dohosts(), if the protocol for a link for which this host · c70d0342
      Mike Hibler authored
      is a member is 'ipv4' then we report the control net IP rather than the
      (non-existent in this case) experimental net IP.
      
      ipv4 protocol is only used in PELAB to group planetlab nodes into a LAN so
      that link tracing can be performed.  Now these nodes in this LAN will be able
      to name each other as "planet-1", etc.
      c70d0342
  10. 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
  11. 03 Oct, 2006 1 commit
  12. 25 Aug, 2006 3 commits
    • Mike Hibler's avatar
      stop yappin' about privkeys! · 80f39ca0
      Mike Hibler authored
      80f39ca0
    • Mike Hibler's avatar
      Fix a bug and clean up some logic. The bug was that the last change was · dd46b7d9
      Mike Hibler authored
      rejecting UDP requests as NON-SSL, due to removing some code that used to
      skip around the TCP checks.
      dd46b7d9
    • Leigh Stoller's avatar
      Add support for dynamic registration of ports on experimental nodes so · 73102ef8
      Leigh Stoller authored
      that clients and servers can avoid using hardwired ports on those
      experimental nodes. I have added the following tmcd operation:
      
      	tmcc portregister <service> [<port>]
      
      where we assume its the control network IP (from the DB), and the pid/eid
      of the node the experiment belongs to. The given port is entered into
      the port_registration table for the experiment, using the service as the
      tag. Supplying port=0 clears the registration from the table.
      
      When called like:
      
      	tmcc portregister <service>
      
      we return the registered port, or nothing.
      
      I hacked up a little C library module in libtb so that there is something
      that looks like a C interface to this:
      
       	int
       	PortRegister(char *service, int port);
      
       	int
       	PortLookup(char *service, char *hostname, int namelen, int *port);
      
      The above routines call out to tmcc of course.
      
      Lastly, I changed the sync server and client to use the new port
      registration, via the library calls above.
      
      There are other emulab services that need to be changed as well, but
      they can be done on an as needed basis.
      73102ef8
  13. 10 Aug, 2006 1 commit
    • Kirk Webb's avatar
      · e087f217
      Kirk Webb authored
      Send along the IP address of the plab node in the return string from
      the 'plabconfig' command.  We can't trust that the node will have
      a resolvable hostname (or have working DNS even..), so slap down the IP
      we have on record in the DB into a file.  This will be used by the
      event proxy, which needs to know the node's routable IP in order to
      subscripe to elvind on ops properly.
      e087f217
  14. 09 Aug, 2006 1 commit
  15. 18 Jul, 2006 1 commit
    • 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
  16. 13 Jul, 2006 4 commits
  17. 03 Jul, 2006 1 commit
    • Mike Hibler's avatar
      Framework for supporting 802.1q tagged VLANs as a form of multiplexed link. · 3f1c15e2
      Mike Hibler authored
      Actually, most of the changes here were just to generalize the "virtual
      interface" state in the DB.  Other than the client-side scripts, there
      is very little specific here specific to tagged VLANs.
      
      In fact, you cannot specify "vlan" as a type yet as we haven't done the
      snmpit support for setting up the switches.
      
      For more info see bas:~mike/flux/doc/testbed-virtinterfaces.txt, which I
      will integrate into the knowledge base and the Emulab doc at some point.
      3f1c15e2
  18. 26 Jun, 2006 1 commit
  19. 24 May, 2006 1 commit
  20. 19 May, 2006 1 commit
  21. 18 May, 2006 1 commit
    • Kirk Webb's avatar
      · ebfdfbf7
      Kirk Webb authored
      Fixup the plabconfig command in tmcd to return immediately if the calling node
      is not a plab vserver (sliver).
      ebfdfbf7
  22. 15 May, 2006 1 commit
  23. 11 Apr, 2006 1 commit
  24. 04 Apr, 2006 1 commit
  25. 15 Mar, 2006 1 commit
  26. 08 Mar, 2006 1 commit
  27. 06 Mar, 2006 1 commit
  28. 01 Mar, 2006 1 commit
    • Kirk Webb's avatar
      · 727dbd61
      Kirk Webb authored
      Plab connectivity monitoring changes:
      
      * tmcd/tmcd.c
      
      Updated connectivity log file names to include the date, and hence automatically
      roll every 24 hours - much more friendly to the filesave, and easier to archive
      off.
      
      * tmcd/common/watchdog
      
      Undo the conversion to minutes for the rusage time period (back to seconds)
      to get the finer granularity Jay wants.  Not deployed yet.  Note that this
      means the watchdog/rusage field will specify the number of _seconds_ not
      minutes as it currently does.  I will update it's description to reflect this.
      727dbd61
  29. 27 Feb, 2006 1 commit
    • Kirk Webb's avatar
      · 16651fbf
      Kirk Webb authored
      Add call "plabeventkeys" for listing all event system keys for the
      experiments on a particular plab pnode.  Can only be called by the
      service slice.
      
      Returns tuples, one per line, for each experiment on the node like so:
      
      PID=<pid> EID=<eid> KEY=<eventsys_key>
      16651fbf
  30. 09 Feb, 2006 1 commit
  31. 06 Feb, 2006 1 commit
  32. 03 Feb, 2006 2 commits
    • Kirk Webb's avatar
      · 03299db0
      Kirk Webb authored
      Be sure to only log if it is the service sliver reporting.
      03299db0
    • Kirk Webb's avatar
      · 3ceadbff
      Kirk Webb authored
      Per Jay's request, log plab isalive events originating from the plab service
      slivers in order to track elab<->node connectivity.
      
      A timeval struct is appended to a file (one per node) inside
      /usr/testbed/log/plabisalive.  The reporting rate has been cranked up to
      once per minute.  Therefore, if all 650 plab nodes where reporting in, that
      amounts to about 10 reports/sec, or 14KB/min leading to a disk consumption
      rate of 21MB/day (617MB/mo or 7.5GB/year).  Not sure how long we are going
      to be running this.
      3ceadbff
  33. 02 Feb, 2006 1 commit
  34. 30 Jan, 2006 1 commit
    • Kirk Webb's avatar
      · 75c5845d
      Kirk Webb authored
      Add svcslice bit to plabconfig
      75c5845d