1. 11 Mar, 2015 1 commit
  2. 25 Nov, 2014 1 commit
  3. 04 Aug, 2014 6 commits
    • Kirk Webb's avatar
      Don't look at expt state when modifying dhcpd.conf for external managment. · 055485ea
      Kirk Webb authored
      For externally managed experiments, don't consider the current state of
      the experiment.  If a node is reserved to the experiment, period, then its
      entry needs to be disabled in dhcp.  Otherwise the next time dhcp_makeconf
      runs, any already active externally managed experiments will revert to Emulab
      dhcp.
      055485ea
    • Kirk Webb's avatar
      Argh - fix typo. · 270ee757
      Kirk Webb authored
      270ee757
    • Kirk Webb's avatar
      Cache external management state for experiments in dhcpd_makeconf. · bf929ce1
      Kirk Webb authored
      Don't look it up for each and every node...
      bf929ce1
    • Kirk Webb's avatar
      Send "BOOTING" event after rebooting externally managed nodes. · bc207167
      Kirk Webb authored
      Also quiet down the EmulabFeatures library where we are using it
      to detect external management.  Too many "checking for feature ..."
      messages.
      bc207167
    • Kirk Webb's avatar
      Make disabling of dhcp for external managment look like elab-in-elab case. · b6956f3d
      Kirk Webb authored
      Leaving the node entries in the dhcpd.conf file, but setting them to
      be ignored is better.  Cuts out "no free leases" log messages and is
      less confusing for people looking through the config file.
      
      Sprinkle a few comments around in dhcpd_makeconf
      b6956f3d
    • Kirk Webb's avatar
      Add support for disabling dhcp for an experiment/user/group · ca561d42
      Kirk Webb authored
      In support of the collaboration effort with CHPC, I've added a check
      and actions for a new feature, ExternalNodeManagment.  When swapping in,
      the swapper, group, and experiment are checked for the feature.  Since
      there doesn't appear to be a way to ask for an experiment feature in the
      parser, I'm punting for now and just letting the experiment inherit this
      feature from the user and/or project/group.
      
      The effect of this feature is that nodes will be omitted from the
      dhcpd.conf file when allocated to a marked experiment, and put back
      in when freed from that experiment.
      
      We will also use this feature to force nodes to reboot even when they
      are in PXEWAIT during the OS setup phase.  Ultimately the point is for
      something else to take over the boot process and manage the experiment's
      nodes for the duration of the experiment.
      ca561d42
  4. 28 May, 2014 1 commit
  5. 21 May, 2014 1 commit
    • Leigh Stoller's avatar
      Support for a private ilo management subnet, on GENIRACKS. · 01d65606
      Leigh Stoller authored
      The goal is to put all of the ilo management interfaces (except for
      the control node of course) on to a private network. We determine
      this by looking at the IP in the interface entry, but since dhcpd
      will not allow a mix of subnets have to create a new subnet for it.
      
      Then when we have to interact with the ilo we will have to set up an
      openvpn tunnel to the control node. Why a VPN? Cause the remote
      console will not work across an http proxy.
      
      This code can be further generalized if we think it will be useful in
      a non-genirack setting.
      01d65606
  6. 27 Mar, 2013 1 commit
    • Mike Hibler's avatar
      Make it explicit that dhcpd is not restarted on an error. · f3a60c85
      Mike Hibler authored
      Simply ignoring the error and letting dhcpd restart doesn't work
      because dhcpd_makeconf doesn't actually ever restart dhcpd, rather
      it relies on the dhcpd_wrapper. But on an error, the wrapper has
      died as well. So now the error message just says that dhcpd is NOT
      running and to use the startup script to restart things.
      f3a60c85
  7. 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
  8. 23 Sep, 2012 1 commit
    • Mike Hibler's avatar
      Always set the 'next-server' options when there is a TFTP subboss. · ca08bc75
      Mike Hibler authored
      Previously, we were not doing this if there was a DHCP subboss (which,
      in theory, should make the next-server line unnecessary since the client
      should ignore us entirely). I have a vague recollection of some PXE caching
      the wrong next-server value and this seemed to help at PRObE.
      ca08bc75
  9. 21 Sep, 2012 1 commit
  10. 24 Jul, 2012 1 commit
    • Mike Hibler's avatar
      Add a 'disabled' field to the subbosses table. · e08bfeec
      Mike Hibler authored
      This allows us to more easily disable a subboss in the event of a temporary
      subboss outage (e.g., hardware failure). Previously we would have to remove
      the related rows from the DB and restore them later.
      e08bfeec
  11. 03 May, 2012 1 commit
  12. 27 Mar, 2012 1 commit
    • Leigh Stoller's avatar
      Bunch of changes for "management" interfaces (ilo,drac,etc); make · 85b81867
      Leigh Stoller authored
      management interfaces more of a first class citizen instead of a
      hack. New script:
      
      management_iface -t <type> -a [key|pswd] [-s <switchinfo>]
                              <node_id> mac IP arg1 arg2
      management_iface -r <node_id>
        -h       This message
        -t type  Management type; ilo, ilo2, drac
        -s info  Optional switch info; switch,card,port
        -s -     Search output of switchmac to find switch info
        -a pswd  Password auth; provide login and password.
        -a key   SSH key auth; provide login and key path.
        -r       Remove management interface from DB.
      
      which adds the management interface to the database (interfaces,
      outlets and outlets_remoteauth. Optionally adds the wires table
      entry if you add -s option. Uses switchmac to find the switch info or
      you can specify it on the command line. So for example, here is what I
      did to add the ilo2 interface for a node:
      
      management_iface -t ilo2 -a pswd -s - pc1 e8:39:35:ae:c9:7c \
                       155.98.34.100 elabman mypasswd
      or
      management_iface -t ilo2 -a key -s - pc1 e8:39:35:ae:c9:7c \
                       155.98.34.100 elabman /root/.ssh/somekey
      
      Of course someone had to have added the elabman user and key or
      password to the ilo config via its interface. 
      
      * dhcpd_makeconf will add local node management interfaces to the
        config file. We can set them to dhcp instead of hardwiring the IP in
        the management interface.
      
      * The DB changes add a management type to the enums in the interfaces
        and wires table, and updates the existing interface entries.
      85b81867
  13. 09 Mar, 2012 1 commit
    • Mike Hibler's avatar
      Add a node-default pxe_boot_path to go along with node-type-default. · 99a462a8
      Mike Hibler authored
      As if things weren't hairy enough for the pxe_boot_path, we need a per-node
      default value. This should not be confused with the next_pxe_boot_path or
      pxe_boot_path fields in the nodes table, which is a per-node value but only
      for the lifetime of the current experiment.
      
      We need this new field specifically so that we can switch some, but not all,
      of the d710s over to the TPM-aware pxeboot.
      
      For the record, the select order for setting the filename field in
      dhcpd.conf is:
      
       1. nodes.next_pxe_boot_path for node
       2. nodes.pxe_boot_path for node
       3. "pxe_boot_path" node_attribute for node
       4. "pxe_boot_path" node_type_attribute for node type
       5. don't set (i.e., use the dhcpd.conf global default).
      99a462a8
  14. 22 Feb, 2012 1 commit
  15. 22 Sep, 2011 1 commit
  16. 17 Aug, 2011 1 commit
  17. 11 Aug, 2011 1 commit
    • Mike Hibler's avatar
      Initial support for loading Windows7 .wim images via WinPE/ImageX. · ac711ea5
      Mike Hibler authored
      1. Support for "one-shot" PXE booting ala the one-shot osid. Switches to
         pxelinux to boot WinPE and then switch back after done. Painful now
         because we have to HUP dhcpd everytime we change the PXE path, but we
         may be able to fix this in the future by going all-pxelinux-all-the-time.
      
      2. Added pxe_select, analogous to os_select, for changing the pxe_boot_path
         including the one time path.
      
      3. Added the WIMRELOAD state machine to shepherd a node through the process.
         Still has some rough edges and may need refining.
      ac711ea5
  18. 29 Jun, 2011 1 commit
    • Mike Hibler's avatar
      Allow for more flexible setup of pxe_boot_path. · 2abf13da
      Mike Hibler authored
      If nodes.pxe_boot_path is set to '/tftpboot/pxelinux/<something>', then
      dhcpd_makeconf will set the (pxeboot) filename to /tftpboot/pxelinux.0
      and symlink the node's config file (/tftpboot/pxelinux.cfg/<mac>) to
      /tftpboot/pxelinux.cfg/<something>.
      
      In other words, we can customize pxelinux to some small degree, using one
      of some small number of pre-existing configurations. We were using pxelinux
      before for plab-in-elab and we will also need it for loading WinPE for
      configuring Windows7 images. For the latter we will set the pxe_boot_path
      to /tftpboot/pxelinux/winpe.
      
      Anyway, ideally we would allow the user to specify a pxelinux config file
      through the NS file, but need to think about the implications of that some
      more. Small steps...
      2abf13da
  19. 31 May, 2011 1 commit
    • Ryan Jackson's avatar
      Restart dhcpd on all subbosses · 4fb4ab9c
      Ryan Jackson authored
      When rebuilding the dhcpd.conf file, make sure to restart dhcpd on all
      subbosses and not just the ones that are listed in the subbosses
      table.  Otherwise if all nodes are moved from one subboss to another
      the old subboss will continue to try serving dhcp leases when it
      shouldn't.
      4fb4ab9c
  20. 29 Jun, 2010 1 commit
  21. 15 Jun, 2010 1 commit
  22. 11 Jun, 2010 2 commits
  23. 23 Apr, 2010 1 commit
  24. 12 Apr, 2010 1 commit
    • Ryan Jackson's avatar
      Add support for subbosses to dhcpd_makeconf · 1d2fa1a9
      Ryan Jackson authored
      Make sure we correctly handle subbosses by:
      A) ignoring nodes which are assigned to other dhcp servers
      B) correctly specifying the next-server and bootinfo options
         if boss is still the dhcp server and other subbosses are to
         handle those duties.
      1d2fa1a9
  25. 24 Feb, 2010 1 commit
    • Ryan Jackson's avatar
      Add node attribute for specifying bootinfo server · ed105035
      Ryan Jackson authored
      Add the bootinfo_server attribute for specifying the bootinfo server the
      node should use during the boot process.  If not specified the node will
      default to trying the tftp server and dhcp server, in that order.
      
      PXE vendor option 128 is used to communicate this to the NBP. Options
      128-254 are available for NBP-specific use according to the PXE spec, so
      we're safe using it.
      ed105035
  26. 30 Nov, 2009 1 commit
  27. 07 Dec, 2006 1 commit
    • Russ Fish's avatar
      Update setup{,-ops}.txt for FreeBSD-6.1 . · 5ffb5664
      Russ Fish authored
      The packagedir is now passed to {ops,boss}-install with a -p argument instead of
      as a PKG_PATH envar.  If the old way is done, PKG_PATH is ignored and packages are
      all built from sources.  This failed in many ways (due to sync problems between the
      6.1 packages and ports tarballs?)  In any case, to prevent others falling down the
      same rabbit-hole, building from sources is now off by default, requiring a -s
      argument to be given to do it.  Libinstall now shows PhaseSkip reasons, to make
      it more clear what's going on.
      
      Also tweak dhcpd_makeconf to handle a null DHCPD_DYNRANGE in the defs file,
      to prevent a bogus dhcpd response from an inner emulab, half set-up for testing.
      5ffb5664
  28. 27 Nov, 2006 1 commit
  29. 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
  30. 16 May, 2006 2 commits
  31. 11 May, 2006 2 commits
    • Mike Hibler's avatar
      Minor tweaks: · 0226e083
      Mike Hibler authored
      dhcpd_makeconf.in: leave the hostname setting for plabinelab nodes
      nfree.in: make sure that if we free a plabinelab or elabinelab node,
                that we reset the dhcpd.conf file
      0226e083
    • Mike Hibler's avatar
      Initial support for plab-in-elab: · 088c8e74
      Mike Hibler authored
      * setup some fields that parallel the
        elab-in-elab ones, for modifying the dhcpd.conf file.
      
      * tb-set-node-plab-role to set a node as either 'plc' or 'node'
        used to set the DB role field above
      088c8e74
  32. 10 Apr, 2006 1 commit