Skip to content
  • Kevin Atkinson's avatar
    Implement frontend and middleend support for loading multiple images · e7871305
    Kevin Atkinson authored
    at once with Frisbee (excludes the actual MFS changes).
    
    Os_load now takes take a list of comma serrated image names for the
    "-i" and "-m" options.  The default OS is the OS for the last image
    specified in the list.  I also changed the "-p" option of osload to
    search both the project specified and emulab-ops for the image rather
    than just the project specified in order to simplify specifying
    multiple images (and because I personally found that behavior annoying
    when using osload).
    
    I modified the current_reloads table to be able to specify more than one
    image for a node by adding an "idx" column which controls the order of
    the reloads.  I also added a "prepare" column to the table (explained
    below)
    
    I modified tmcd to basically loop over the entries in the table and
    create a multiline LOADINFO responsive, and modified rc.frisbee to
    handle the multiline response and load each image in turn.
    
    I modified os_load to take a new option "-P" which will tell rc.frisbee
    to zap the superblocks even if a whole disk image is not specified.
    To do this I set the prepare entry for the first image in the
    current_reloads table to true.  Tmcd than passes this into to
    rc.frisbee in the LOADINFO line.  When rc.frisbee sees this it will
    make sure to zap the superblock before loading that image.
    
    To support having multiple images as the default, "default_imageid"
    can now be a comma separated list.  I implemented a hack to be able to
    set multiple imageids via editnodetype.php3.  Basically the form
    splits default_imageid into default_imageid_0, default_imageid_1, etc
    and than adds an empty default_imageid_# slot to allow adding an
    imageid.  Multiple images can be added by adding one image, than
    submitting the form, and than adding another into the empty slot.  Not
    the best, but I don't thing this will be a very common operation.
    When the form is submitted it will than combine all default_imageid_#
    into a comma separated list ignoring any that are deleted or set to
    "No ImageID" (ie 0).
    
    Everything will work fine with old MFSs as long as only one image is
    loaded.  If multiple images are loaded with an old MFS, an email will
    be sent to testbed-ops.  This works by having tmcd detect old MFS's by
    using the version number and setting the state to RELOADOLDMFS.  Stated
    will pick up on the and send the email to testbed-ops via a trigger.
    e7871305